如何让AppleScript获取邮件消息的属性
尝试这种方法:
set counter to 1
repeat with each_message in mailbox "INBOX" of account "iCloud"
set message_ref to (a reference to each_message)
set message_contents to contents of message_ref
get date string of date received of message_contents
counter = counter + 1
if counter > 10 then stop
end repeat
(再次,我在尝试“a reference to”这种用法,因为我可能想从收件箱中删除这条消息。)
这会产生错误“can't make each_message into type reference”。这是怎么回事?
原始方法:
tell application "Mail"
set the_message to a reference to last message of mailbox "INBOX" of account "iCloud"
open the_message
display dialog (date string of date received of the_message)
end tell
“display dialog”会导致错误。(我在尝试“a reference to”因为我可能想删除这条消息。无论是否包含它,我都会得到同样的错误。)
解决方案
针对你当前的方法:
首先,邮箱是一个用来保存消息的容器,但重复循环的变量本身并不是一条消息。你需要从容器中取出一个元素,比如一条消息,例如:
repeat with each_message in (messages of mailbox "INBOX" of account "iCloud")
你也在使用repeat x in y形式,在这种形式中,循环变量x本身就是对y中某个条目的引用。要处理实际的消息,你需要对该引用所指向的内容进行操作:
set message_ref to (a reference to contents of each_message)
综合起来,你将得到类似的结果:
tell application "Mail"
set counter to 1
repeat with each_message in (messages of mailbox "INBOX" of account "iCloud")
set message_ref to (a reference to contents of each_message)
set message_contents to contents of message_ref
display dialog date string of (get date received of message_contents)
set counter to counter + 1
if counter > 10 then exit repeat -- stop
end repeat
end tell
原始方法:
这是那种没有隐含“获取”的情形之一。
在你获取date received,的date string的复合语句中,并不存在对date received的隐含“获取”。显式获取date received会使date string有一个目标:
display dialog date string of (get date received of the_message)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。