Applescript:如果用户在Apple Mail中输入密码,我该如何停止脚本?

时间:2011-12-14 18:53:39

标签: applescript

我的AppleScript在它可以同步之前就被挂起了,因为Apple Mail中的一个错误,如果SMTP服务器与描述不符,它将再次要求输入密码。所以用户必须输入他们的密码并点击确定或在任何事情发生之前进入。 我有一个对话框提示,说“在密钥链中记住密码是个好主意”,然后我在另一个提示上激活,这样他们无法在不输入密码的情况下点击确定......但这似乎不一致瘸。我想找出一种方法,提示不会出现,或者我可以暂停脚本直到输入密码。

--Activate Mail Application
tell application "Mail"
activate "Mail"
display dialog "Welcome to Mailbox setup with Google Mail. Please enter the password for your e-mail when prompted. This should not take any more than a minute."

delay 0.5

--Variables
--Creating account


set email_address to (short user name of (system info)) & "@EMAIL.com"
set full_name to (long user name of (system info))
set mailboxname to (long user name of (system info))
set shortname to (short user name of (system info))
set myPass to text returned of ¬
    (display dialog "Enter password for " & ¬
        quoted form of shortname ¬
        with title ¬
        "Gmail" with icon stop ¬
        default answer ¬
        "" buttons {"Continue…"} ¬
        default button 1 ¬
        giving up after 5 with hidden answer)


try
    set newacct to "imap.gmail.com"
    set newacct to make new imap account with properties {name:mailboxname, user name:email_address, password:myPass, uses ssl:true, server name:"imap.gmail.com", port:993, full name:full_name, email addresses:{email_address}}
    tell application "System Events" to key code 53

    --Create SMTP filter
    set addsmtp to "smtp.gmail.com"
    set addsmtp to make new smtp server with properties {server name:"smtp.gmail.com", user name:email_address, uses ssl:true, authentication:password, password:myPass}


    --Attach SMTP server
    set smtp server of newacct to addsmtp
    delay 1.0
    tell application "System Events" to tell process "Mail"
        set frontmost to true
        keystroke return
    end tell

    --Mailbox Sync
    delay 0.5
    on return
    tell application "Mail"
        synchronize with account mailboxname
    end tell

end try
end tell

Example

3 个答案:

答案 0 :(得分:2)

有一种解决方法:

set authentication to ("axct" as constant)

而不是

set authentication to password

答案 1 :(得分:1)

您可以通过检查是否打开工作表(在您输入密码的情况下)来等待密码输入:

tell application "System Events"
    tell process "Mail"
        repeat until exists sheet 1 of window 1
            delay 0.1
        end repeat
    end tell
end tell

答案 2 :(得分:1)

我前几天也开始研究这个问题了。 据我所知,你应该和我有同样的问题。 当您告诉脚本设置新的SMTP服务器时,您必须声明

“身份验证:密码”

问题是这只是一个错误。 如果您检查AppleCode中的邮件库,它会声明“身份验证”是“密码”后缀的正确前缀。

尽管如此,它每次都会引发错误。

我不能在一分钟内看到任何工作,以前也没有尝试过的人。 主要是垃圾