Mail.app 的规则向 AppleScript 发送了错误的消息
Mail.app's rules are sending the wrong messages to AppleScript
我有以下由 Mail.app 规则触发的 AppleScript:
using terms from application "Mail"
on perform mail action with messages theMessages for rule theRule
repeat with msg in theMessages
set theText to subject of msg & return & content of msg & date sent of msg
display dialog (theText)
end repeat
end perform mail action with messages
end using terms from
如果我 select 一条消息,右键单击并选择 'Apply Rules' 它可以正常工作。但是,如果脚本是由传入消息触发的,它似乎在消息中有随机消息。
规则如下:
如何获得正确的消息?
我在邮件 11.2 中使用 High Sierra。
由于您的脚本将遍历您的邮件,我希望您的邮件不会按日期排序...所以当您 运行 您编写脚本时,它将采用第一个元素(而不是最新的)
您可以 运行 发送邮件,然后按日期对您的电子邮件进行排序(最近的在顶部)然后退出并重新发送 运行 发送邮件(再次检查配置是否已保存)
然后验证您的脚本是否有效。
如果你不想手动设置过滤器,根据this,你可以在开头添加以下脚本:
tell application "System Events" to click menu item "Date" of menu "Sort By" of menu item "Sort By" of menu "View" of menu bar item "View" of menu bar 1 of process "Mail"
在 运行 执行脚本之前按日期对电子邮件进行排序,以便获得正确的消息。
显然,使用规则处理传入消息是一个异步过程。调用 on perform mail action
时,消息尚未完全更新。只有部分数据可以立即使用。
可能的解决方法是在脚本中添加 delay 1
。这给了 Mail 一秒钟的时间来完成消息的更新。下面是脚本的样子:
using terms from application "Mail"
on perform mail action with messages theMessages for rule theRule
repeat with msg in theMessages
-- delay a bit of time for msg to load
delay 1
set theText to subject of msg & return & content of msg & date sent of msg
— do other processing
end repeat
end perform mail action with messages
end using terms from
我有以下由 Mail.app 规则触发的 AppleScript:
using terms from application "Mail"
on perform mail action with messages theMessages for rule theRule
repeat with msg in theMessages
set theText to subject of msg & return & content of msg & date sent of msg
display dialog (theText)
end repeat
end perform mail action with messages
end using terms from
如果我 select 一条消息,右键单击并选择 'Apply Rules' 它可以正常工作。但是,如果脚本是由传入消息触发的,它似乎在消息中有随机消息。
规则如下:
如何获得正确的消息?
我在邮件 11.2 中使用 High Sierra。
由于您的脚本将遍历您的邮件,我希望您的邮件不会按日期排序...所以当您 运行 您编写脚本时,它将采用第一个元素(而不是最新的)
您可以 运行 发送邮件,然后按日期对您的电子邮件进行排序(最近的在顶部)然后退出并重新发送 运行 发送邮件(再次检查配置是否已保存)
然后验证您的脚本是否有效。
如果你不想手动设置过滤器,根据this,你可以在开头添加以下脚本:
tell application "System Events" to click menu item "Date" of menu "Sort By" of menu item "Sort By" of menu "View" of menu bar item "View" of menu bar 1 of process "Mail"
在 运行 执行脚本之前按日期对电子邮件进行排序,以便获得正确的消息。
显然,使用规则处理传入消息是一个异步过程。调用 on perform mail action
时,消息尚未完全更新。只有部分数据可以立即使用。
可能的解决方法是在脚本中添加 delay 1
。这给了 Mail 一秒钟的时间来完成消息的更新。下面是脚本的样子:
using terms from application "Mail"
on perform mail action with messages theMessages for rule theRule
repeat with msg in theMessages
-- delay a bit of time for msg to load
delay 1
set theText to subject of msg & return & content of msg & date sent of msg
— do other processing
end repeat
end perform mail action with messages
end using terms from