Command line farà il trucco (con alcuni 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 fornitore).
Questo sito ha i dettagli su come configurarlo. Se utilizzi l'autenticazione in due passaggi con il tuo account, crea una password dell'applicazione per la riga di comando e usa quel token quando aggiungi la password SASL.
Questa configurazione funziona bene ma non gestirà gli allegati. Se devi inviare un file, probabilmente avrai un tempo più semplice usando la GUI di Mail.
Tuttavia, il tuo problema è che non vuoi aprire un programma per inviare un messaggio, corretto? Perché questo richiede di avere il terminale aperto o di aprire il terminale quando è necessario inviare. Ma sarebbe abbastanza facile imbattersi in un Applescript che ti chiederà l'indirizzo di destinazione, l'oggetto e il testo dell'email, quindi rimbalzare direttamente sulla shell ed uscire. Buttalo 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: aggiorna il applescript per funzionare un po 'più efficientemente; utilizza il codice da qui per scrivere il corpo del messaggio in un file temporaneo nella propria directory home, quindi utilizza semplicemente cat per leggere il contenuto del file in un messaggio di posta elettronica e infine elimina il file temporaneo. L'ho provato e funziona bene anche con personaggi maltrattati dallo script originale.
try
display dialog "Send email to:" default answer "[email protected]"
set theEmail to (text returned of result)
if theEmail is "[email protected]" 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