Командний рядок виконає трюк (з деякою конфігурацією). Вам потрібно буде налаштувати його для використання автентифікації вашого акаунта Google (я зазначив, що ви позначили це питання "gmail", тому я припускаю, що це ваш провайдер).
На цьому веб-сайті є подробиці, як його налаштувати. Якщо ви використовуєте двоетапну автентифікацію зі своїм обліковим записом, просто створіть пароль програми для командного рядка та використовуйте цей маркер, додаючи пароль SASL.
Ця установка працює добре, але не обробляє вкладення. Якщо вам потрібно надіслати файл, вам, мабуть, буде легший час, використовуючи графічний інтерфейс пошти.
Однак ваша проблема полягає в тому, що ви не хочете відкривати програму для надсилання повідомлення, правильно? Оскільки для цього потрібно, щоб Ви відкрили термінал або відкрили термінал, коли Вам потрібно надіслати. Але було б досить легко з’єднати Applescript, який підкаже вам адресу, тему та текст електронної пошти, а потім відскочить прямо до оболонки та вийти. Введіть це в папку сценаріїв користувачів і переконайтеся, що ваш Mac налаштований для відображення сценаріїв на панелі меню для швидкого доступу.
Друга редакція: оновлено яблучний сценарій, щоб працювати трохи ефективніше; використовує код звідси, щоб записати тіло повідомлення у тимчасовий файл у вашому домашньому каталозі, потім просто використовує cat, щоб прочитати вміст файлу в електронному повідомленні, і, нарешті, видаляє файл temp. Я перевірив це, і він добре працює навіть із персонажами, які були керовані оригінальним сценарієм.
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