AppleScript和Mail.app:检查新消息是否包含字符串

时间:2012-06-05 02:17:36

标签: email applescript

我正在编写一个脚本来检查是否已提交特定的网络表单。

到目前为止,该剧本如下:

tell application "Mail"
check for new mail
set newmail to get the unread count of inbox
repeat with msg in newmail
    if msg's subject contains "New newsletter built by" then
        return msg's subject
    end if
end repeat
end tell

我的收件箱中有一封未读电子邮件供该脚本使用,但我仍然收到错误:

error "Mail got an error: Can’t make 1 into type specifier." number -1700 from 1 to specifier

任何帮助都将受到赞赏。

干杯!

4 个答案:

答案 0 :(得分:3)

tell application "Mail"
    check for new mail
    repeat until (background activity count) = 0
        delay 0.5 --wait until all new messages are in the box
    end repeat
    try
        return subject of (first message of inbox whose read status is false and subject contains "New newsletter built by ")
    end try
end tell

答案 1 :(得分:1)

Applescript有点棘手。看起来您正在尝试解析收件箱的计数,而不是实际的收件箱。

请尝试使用此脚本:

tell application "Mail"
    check for new mail
    -- instead of getting the unread count of inbox
    -- let's set an Applescript variable to every message of the inbox
    set myInbox to every message of inbox
    repeat with msg in myInbox
        -- and look at only the ones that are unread
        if read status of msg is false then
            -- and if the subject of the unread message is what we want 
            if msg's subject contains "New newsletter built by" then
                -- return it
                return msg's subject
            end if
        end if
    end repeat
end tell

答案 2 :(得分:0)

添加到jackjr300说的....

tell application "Mail"
    set x to unread count of inbox
    check for new mail
    delay 3
    set y to unread count of inbox
    set z to y - x
end tell

if x = y then
    say "There is nothing to report"
end if

if z = 1 then
    say "You have one new message"
end if

if z = 2 then
    say "You have two new messages"
end if

if z = 3 then
    say "You have three new messages"
end if
if z = 4 then
    say "You have four new messages"
end if
if z = 5 then
    say "You have five new messages"
end if
if z = 6 then
    say "You have six new messages"
end if
if z = 7 then
    say "You have seven new messages"
end if
if z = 8 then
    say "You have eight new messages"
end if

if z = 9 then
    say "You have nine new messages"
end if
if z = 10 then
    say "You have ten new messages"
else
    say "You have more than ten new messages"
end if

答案 3 :(得分:-1)

我实际上已经解决了这个问题,所以如果其他人需要帮助,我会在这里发布。检查一下:

tell application "Mail"
check for new mail

set checker to (messages of inbox whose read status is false)
set neworder to number of items in checker

if neworder > 0 then
    repeat with i from 1 to number of items in checker
        set msg to item i of checker
        if msg's subject contains "New newsletter built by " then
            return msg's subject
        end if
    end repeat
end if
end tell