1

它仅在您右键单击邮件消息并选择“运行规则”时才有效,但不适用于传入消息(没有交互)。

第一个对话框在传入或手动运行时显示,但第二个对话框(带有 id)仅在手动运行时显示。console.log 中没有显示任何内容

有任何想法吗?

using terms from application "Mail"
    on perform mail action with messages theMessages for rule theRule
        tell application "Mail"
            repeat with theMessage in theMessages
                display dialog "inside"

                set theId to id of theMessage

                display dialog "the id is " & theId

            end repeat
        end tell
    end perform mail action with messages
end using terms from

更新:我添加了一个 try catch 块

set theId to id of theMessage

这是我得到的错误:

Can't get class mssg 1 of class mbxp "Incoming POP messages" of class mact "Telenet". Invalid index. -1719

知道这意味着什么吗?手动应用规则时我没有收到错误消息。

更新 2:好的,我发现传入的消息还没有 ID。这是一个问题,因为我想将电子邮件保存到磁盘:

set theEmail to (do shell script "mdfind -onlyin ~/Library/Mail \"kMDItemFSName = '" & theId & ".emlx'\"")
set archiveName to theId & "-" & (extract address from theMessage's sender) & ".emlx"
set saveLocation to "Users:wesley:Documents:Incoming:"

do shell script "cp '" & theEmail & "' '" & POSIX path of saveLocation & "';"

有没有办法解决?

4

1 回答 1

0

正如我在评论中所承诺的,这是一个 AppleScript,它记录了 Mail 消息的subjectidmessage id~/Desktop/log.txt。

using terms from application "Mail"
    on perform mail action with messages theMessages for rule theRule
        try
            repeat with theMessage in theMessages
                LogText("subject:    " & (theMessage's subject as string))
                LogText("id:         " & (theMessage's id as string))
                LogText("message id: " & (theMessage's message id as string))
                LogText("")
            end repeat
        on error errorText number errorNumber
            tell application "Mail" to display alert ("Error: " & errorNumber) message errorText
            return
        end try
    end perform mail action with messages
end using terms from


on LogText(theText)
    tell application "Finder"
        set logPath to (path to the desktop as text) & "log.txt"
        try
            set writeText to open for access file logPath with write permission
            set currentDateAsString to do shell script "date +\"%Y-%m-%d %T\""
            write (currentDateAsString & "    " & (theText as text) & return) to writeText starting at ((get eof writeText) + 1)
            close access writeText
        on error errorText number errorNumber
            close access writeText
            error errorText number errorNumber
        end try
    end tell
end LogText

我也在运行 OS X 10.8.2 和 Mail 6.2。正如我所说,我很惊讶这样说,但是通过邮件规则触发上述 AppleScript 对传入消息的效果与在选择菜单“应用规则”时一样有效。

于 2013-01-26T20:48:35.357 回答