Командная строка сделает свое дело (с некоторой конфигурацией). Вам нужно будет настроить его на использование аутентификации вашей учетной записи Google (я отметил, что вы пометили вопрос «gmail», поэтому я предполагаю, что это ваш провайдер).
Этот сайт содержит подробную информацию о том, как его настроить. Если вы используете двухэтапную аутентификацию со своей учетной записью, просто создайте пароль приложения для командной строки и используйте этот токен при добавлении пароля SASL.
Эта настройка работает хорошо, но не будет обрабатывать вложения. Если вам нужно отправить файл, вам, вероятно, будет легче использовать почтовый интерфейс.
Однако ваша проблема в том, что вы не хотите открывать программу для отправки сообщения, правильно? Потому что это требует, чтобы у вас был открыт терминал, или чтобы открыть терминал, когда вам нужно отправить. Но было бы довольно легко собрать вместе Applescript, который запросит у вас адрес получателя, тему и текст электронного письма, а затем передать его непосредственно в оболочку и выйти. Добавьте это в папку пользовательских сценариев и убедитесь, что ваш Mac настроен на отображение сценариев в строке меню для быстрого доступа.
Второе редактирование: обновлен яблочный скрипт, чтобы он работал немного более эффективно; использует код из здесь , чтобы написать тело сообщения временного файл в вашем домашнем каталоге, то просто использует кошку , чтобы прочитать содержимое файла в сообщение электронной почты, и , наконец , удаляет временный файл. Я проверил его, и он хорошо работает даже с персонажами, с которыми плохо обращался оригинальный скрипт.
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