Статья MacTech может быть устаревшей. Страницы Apple по теме, которую я смог найти, ничего не упоминают об этом обработчике, с подчеркиванием, только с пробелами.
Первое подразумевает, что вам вообще не нужен обработчик для вашего сценария. Я подтвердил, что это правда. Следующий файл скрипта запускается при входящем сообщении и отображает диалоговое окно:
display dialog "Hello without handler"
На последней странице используется следующий формат, который я также проверил:
using terms from application "Mail"
on perform mail action with messages caughtMessages for rule catchingRule
display dialog "We got one!"
end perform mail action with messages
end using terms from
Если вы используете IMAP, вы можете получить данные из входящих сообщений. Например:
using terms from application "Mail"
on perform mail action with messages caughtMessages for rule catchingRule
repeat with caughtMessage in caughtMessages
try
set mailSubject to subject of caughtMessage
display dialog mailSubject
on error errorString number errorNumber
display dialog errorString
end try
end repeat
end perform mail action with messages
end using terms from
Если вы используете POP, входящие сообщения недоступны; вы получите что-то вроде Can’t get «class mssg» "Incoming POP Messages" of «class mact» id "LONG-ID". Invalid index.
В этом случае вы можете найти комментарии к ответ на этот вопрос полезными.
Вкратце, для получения данных от входящее сообщение в учетной записи POP, сообщение должно быть сначала перемещено в папку, отличную от папки «Входящие». Попросите правило переместить сообщение в другой созданный вами почтовый ящик, например, «Входящий триаг», и затем сценарий выполняет итерацию по всем сообщениям в этом почтовом ящике, а не по сообщениям, переданным обработчику. Например:
using terms from application "Mail"
on perform mail action with messages caughtMessages for rule catchingRule
--for POP messages, the rule must have already moved it into Incoming Triage
set caughtMessages to every message of mailbox "Incoming Triage"
repeat with caughtMessage in caughtMessages
tell caughtMessage
set mailSubject to subject
end tell
display dialog mailSubject
move caughtMessage to mailbox "INBOX" of account 1
end repeat
end perform mail action with messages
end using terms from