2012-06-05 43 views
2

我正在编写脚本以检查是否提交了特定的Web表单。AppleScript和Mail.app:检查新邮件是否包含字符串

剧本至今读取正是如此:

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 

任何将不胜感激。

干杯!

回答

1
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

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 
-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 
+0

除非您收到的所有消息在不到十分之一秒,你的脚本将不能正确每次工作,因为'检查新邮件'命令不会等待,所以** Mail **将不会有时间登录到邮件服务器并检索任何待处理的邮件。 – jackjr300

+0

解决方案在我的答案 – jackjr300

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 
相关问题