为什么这个AppleScript的获得与QUOT;的AppleEvent处理程序失败"错误在Mac OS X 10.5 Leopard的? [英] Why does this AppleScript get an "AppleEvent handler failed" error on Mac OS X 10.5 Leopard?

查看:449
本文介绍了为什么这个AppleScript的获得与QUOT;的AppleEvent处理程序失败"错误在Mac OS X 10.5 Leopard的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

首先,我知道,Leopard是老老顽固在这一点上,但它是我希望能够与这个脚本的支持,所以请多多包涵(它在Mac OS X 10.4甚至不能最低老虎因错误瓦特/邮件重定向 / 转发 / 回复错误我发现了很久以前)。

First, I know, Leopard is the old-fogey at this point, but it's the minimum I'd like to be able to support with this script, so please bear with me (it's not even possible under Mac OS X 10.4 Tiger due to a bug w/Mail redirect/forward/reply bug I had uncovered long ago).

我已经重新审视建立一个AppleScript须与主题台的<$工作C $ C> spamtrainer ,所以它会经过一个选择在垃圾邮件文件夹的邮件,并尝试将它们重定向到指定的邮箱。这里是我到目前为止(注意,实际发送此刻注释掉,后来更多):

I've been revisiting building an AppleScript to work in conjunction with Topic Desk's spamtrainer, so it goes through a selection of messages in the Junk folder and attempts to redirect them to a specified mailbox. Here's what I have so far (note that the actual sending is commented out at the moment, more on that later):

(* Train Spam - Redirect (not forward) email from the Junk folder (which hasn't already been redirected or
 *             determined by the mail server to be spam) to an appropriate spam mailbox on the mail server.
 *             Developed to be used in conjunction w/spamtrainer on a Mac OS X Server mail server.
 * 
 * v0.1   2011-07-27 - Morgan Aldridge
 *                     Initial version.
 *)

using terms from application "Mail"
    on perform mail action with messages selectedMsgs in mailboxes selectedMailboxes
        tell application "Mail"
            -- configuration variables
            set junkPrefix to "***JUNK MAIL***"
            set junkRecipient to "junkmail@domain.tld"

            -- ensure that we're in the Junk mailbox
            -- (it'd be disasterous to accidentally redirect mail for training from another mailbox)
            if (count of selectedMailboxes) is 1 and (first item of selectedMailboxes) is junk mailbox then
                set selCount to (count of selectedMsgs)
                set redirectedCount to 0
                repeat with counter from 1 to selCount
                    set msg to item counter of selectedMsgs
                    -- if the subject doesn't start with junkPrefix and the message hasn't already been redirected, then redirect it
                    -- (otherwise, if it starts with junkPrefix, it means it was already detected as junk by the mail server)
                    -- (and, obviously, if it was already redirected, that was probably for the sake of junk training as well)
                    if subject of msg does not start with junkPrefix and not was redirected of msg then
                        set newRedirectMsg to redirect msg with opening window
                        tell newRedirectMsg
                            -- set the to recipient to that of the specified spam mailbox on the mail server
                        make new recipient at beginning of to recipients with properties {address:junkRecipient}
                            -- remove any bcc or cc recipient (we don't want to be spamming anyone else in the process)
                            delete bcc recipients
                            delete cc recipients
                        end tell
                        -- actually send the message
                        -- send newRedirectMsg
                    else
                        display dialog "Oops, the message was already flagged as junk by the mail server or you've already redirected it!"
                    end if
                end repeat
            else
                display dialog "Oops, you're not in your Junk mailbox!"
            end if
        end tell
    end perform mail action with messages
end using terms from
-- this is required when _not_ running from the Script menu (e.g. Script Editor, FastScripts, etc.)
using terms from application "Mail"
    on run
        tell application "Mail" to set sel to selection
        tell application "Mail" to set selBox to selected mailboxes of message viewer 1
        tell me to perform mail action with messages (sel) in mailboxes (selBox)
    end run
end using terms from

当从脚本Editor.app运行它(如此这般通过上运行告诉我)和垃圾邮件的少数邮件选择(这是在Mac OS X 10.5.8 Leopard)的,似乎第一个消息的工作(打开一个新的重定向消息W /受援国集,并清空CC / BCC字段),另一个重定向消息窗口打开,但他们/ CC / BCC字段不更新和脚本Editor.app <​​/ code>弹出的对话框的邮件得到了一个错误:的AppleEvent处理程序失败错误。是事件日志的内容如下:

When running it from Script Editor.app (so it goes through the on run and tell me to) and a small number of Junk messages select in Mail (this is under Mac OS X 10.5.8 Leopard), it seems to work for the first message (opening a new redirected message, w/to recipient set, and CC/BCC fields emptied), and the other redirected message windows open, but their To/CC/BCC fields are not updated and Script Editor.app pops up the dialog with the "Mail got an error: AppleEvent handler failed" error. The contents of the Event Log are as follows:

tell application "Mail"
    get selection
        {message id 464214 of mailbox "Junk", message id 464213 of mailbox "Junk", message id 464211 of mailbox "Junk"}
    get selected mailboxes of message viewer 1
        {junk mailbox}
    get junk mailbox
        junk mailbox
    get subject of message id 464214 of mailbox "Junk"
        ": Your Invitation Into a Global Directory"
    get was redirected of message id 464214 of mailbox "Junk"
        false
    redirect message id 464214 of mailbox "Junk" with opening window
        outgoing message id 400031520
    make new recipient at beginning of every to recipient of outgoing message id 400031520 with properties {address:"junkmail@domain.tld"}
        to recipient 1 of outgoing message id 400031520
    delete every bcc recipient of outgoing message id 400031520
    delete every cc recipient of outgoing message id 400031520
    get subject of message id 464213 of mailbox "Junk"
        "Nominate Your Favorite Products for the Community Choice Awards"
    get was redirected of message id 464213 of mailbox "Junk"
        false
    redirect message id 464213 of mailbox "Junk" with opening window
        outgoing message id 378471104
    make new recipient at beginning of every to recipient of outgoing message id 378471104 with properties {address:"junkmail@domain.tld"}
        "Mail got an error: AppleEvent handler failed."

所以,很明显,好像失败与设置为收件人,但在所有的第一条消息。随后的脚本的运行不会对第一条消息重振邮件导致失败也是如此。

So, clearly it seems like the failure is with setting the to recipients in all but the first message. Subsequent runs of the script without relaunching Mail result in failures on the first message as well.

这个问题的最奇怪的地方在于,在运行脚本后退出邮件时,有一个隐藏的,空白的窗口的重定向消息(即使是一个成功)的各的弹出询问您是否要保存更改与否。这听起来的非常的类似的东西在这个线程 ,但我不知道是什么原因造成的。

The oddest part of this issue is that, when quitting mail after running the script, there's a hidden, blank window for each of the redirected messages (even the one that was successful) that pops up asking if you want to save changes or not. This sounds very similar to something noted in this thread, but I'm not sure what causes it.

那么,是什么造成这个错误和失败?我该如何解决呢?而且,对于额外的学分,为什么隐藏的,空白的信息创建,我怎么能prevent从发生?

So, what's causing this error and failure? How can I resolve it? And, for extra credit, why are the hidden, blank messages created and how can I prevent that from occurring?

推荐答案

您的脚本看起来好像没什么问题。

Your script looks fine to me.

如果我是你,我会尝试在同一台计算机上运行的其他OS X帐户的脚本,修复权限,看看你的日志(你已经这样做了,但它仍然是一个好主意),运行的所有相关软件更新,暂时将你的〜/资源库/邮件文件夹来消除它作为一个因素,等等。告诉我发生了什么,尤其是如果它再次工作:)

If I were you, I would try running the script in another OS X account on the same computer, repair permissions, look at your logs (you've already done that, but it's still a good idea), run all relevant software updates, temporarily move your ~/Library/Mail folder to eliminate it as a factor, etc. Tell me what happens, especially if it works again :)

这篇关于为什么这个AppleScript的获得与QUOT;的AppleEvent处理程序失败&QUOT;错误在Mac OS X 10.5 Leopard的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆