Wiersz poleceń załatwi sprawę (z pewną konfiguracją). Musisz skonfigurować to, aby korzystać z uwierzytelniania konta Google (zauważyłem, że otagowałeś pytanie „gmail”, więc zakładam, że to twój dostawca).
Ta strona zawiera szczegółowe informacje na temat konfiguracji. Jeśli korzystasz z dwuetapowego uwierzytelniania na swoim koncie, po prostu utwórz hasło aplikacji dla wiersza poleceń i użyj tego tokena podczas dodawania hasła SASL.
Ta konfiguracja działa dobrze, ale nie obsługuje załączników. Jeśli musisz wysłać plik, prawdopodobnie będziesz mieć łatwiejszy czas przy użyciu GUI poczty.
Problem jednak polega na tym, że nie chcesz otwierać programu w celu wysłania wiadomości, prawda? Ponieważ wymaga to otwarcia Terminalu lub otwarcia Terminalu, gdy trzeba wysłać. Ale dość łatwo byłoby zebrać razem Applescript, który poprosi cię o adres docelowy, temat i treść e-maila, a następnie odeśle go bezpośrednio do powłoki i wyjdzie. Wrzuć to do folderu skryptów użytkownika i upewnij się, że komputer Mac jest skonfigurowany do wyświetlania skryptów na pasku menu w celu szybkiego dostępu.
Druga edycja: zaktualizowałem skrypt jabłkowy, aby działał trochę bardziej wydajnie; używa kodu z tego miejsca, aby zapisać treść wiadomości do pliku tymczasowego w katalogu domowym, a następnie po prostu używa cat do odczytania zawartości pliku do wiadomości e-mail, a na koniec usuwa plik tymczasowy. Przetestowałem to i działa dobrze nawet w przypadku znaków, które były źle traktowane przez oryginalny skrypt.
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