La riga di comando farà il trucco (con qualche configurazione). Dovrai configurarlo per utilizzare l'autenticazione del tuo account Google (ho notato che hai taggato la domanda con "gmail", quindi presumo che sia il tuo provider).
Questo sito contiene i dettagli su come configurarlo. Se si utilizza l'autenticazione in due passaggi con l'account, è sufficiente creare una password dell'applicazione per la riga di comando e utilizzare quel token quando si aggiunge la password SASL.
Questa configurazione funziona bene ma non gestirà gli allegati. Se devi inviare un file, probabilmente avrai un momento più facile usando la GUI di Mail.
Tuttavia, il tuo problema è che non vuoi aprire un programma per inviare un messaggio, giusto? Perché ciò richiede l'apertura del Terminale o l'apertura del Terminale quando è necessario inviare. Ma sarebbe abbastanza facile mettere insieme un Applescript che ti chiederà l'indirizzo di destinazione, l'oggetto e il testo dell'email, quindi rimbalzarlo direttamente sulla shell ed uscire. Aggiungilo nella cartella degli script utente e assicurati che il tuo Mac sia configurato per mostrare gli script nella barra dei menu per un accesso rapido.
Seconda modifica: aggiornato il applecript per funzionare in modo un po 'più efficiente; utilizza il codice da qui per scrivere il corpo del messaggio in un file temporaneo nella directory principale, quindi utilizza semplicemente cat per leggere il contenuto del file in un messaggio e-mail e infine elimina il file temporaneo. L'ho provato e funziona bene anche con personaggi che sono stati gestiti male dalla sceneggiatura originale.
try
display dialog "Send email to:" default answer "email@domain.com"
set theEmail to (text returned of result)
if theEmail is "email@domain.com" then error "No recipient specified!"
display dialog "Email subject:" default answer "Subject"
set theSubject to (text returned of result)
if theEmail is "Subject" then error "No subject specified!"
display dialog "Message:" default answer ¬
"Enter message text" & return & return & return & return
set theBody to (text returned of result)
set this_file to (((path to home folder) as text) & "message.tmp")
my write_to_file(theBody, this_file, true)
do shell script "cd ~/; cat message.tmp | mail -s \"" & theSubject & "\" " & theEmail & "; rm message.tmp"
on error theError
display dialog theError buttons {"Quit"} default button 1
end try
-- this subroutine saves input as a text file
on write_to_file(this_data, target_file, append_data) -- (string, file path as string, boolean)
try
set the target_file to the target_file as text
set the open_target_file to ¬
open for access file target_file with write permission
if append_data is false then ¬
set eof of the open_target_file to 0
write this_data to the open_target_file starting at eof
close access the open_target_file
return true
on error
try
close access file target_file
end try
return false
end try
end write_to_file