Статья 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
person
Jerry Stratton
schedule
17.01.2020