0

因此,我一直在寻找一种方法来执行以下操作,在 Mail.app 中按顺序使用 AppleScript:

  1. 拦截传出消息(我们称之为“A”)
  2. 发出消息“A”的重复消息(我们称之为“B”)
  3. 格式化这条新消息的文本/内容等(“B”)
  4. 发送这条新格式化的消息(“B”)
  5. 忽略原来的(“A”)。

为什么我想做一些看起来如此迟钝的事情?

  • 令人惊讶的是, Apple 的 Mail.app不会格式化您的邮件的传出内容。
  • 通过执行基本的 Message > Preference > etc 等,它只会更改通过 Mail.app 看到的消息的字体样式。当您的收件人收到邮件时,选择的字体是客户端的默认字体(对于 Outlook 等客户端来说,这可能是令人讨厌的 Times New Roman)。

那么,为什么不直接要求一个 Applescript 来格式化您的传出消息呢?

仍在使用 Applescript 学习绳索,因此,如果有人能编写出符合要求的 AppleScript,将不胜感激。

我的意图是在我点击“发送消息”(通过可爱的键盘大师)时触发 Applescript。

这是我可以想出的骨架applescript代码:

set theFont to "Lucida Sans, Lucida Sans Unicode, Lucida Grande, Verdana, Arial"
set theSize to 12
tell application "Mail"
    -- 1. intercept an outgoing message
    set outMsg to front outgoing message


    -- 2. make and exact duplicate of this outgoing message
    -- need a little help with extracting...
            set fmtMsg to make new outgoing message with properties 
        {   sender:,
            subject:”Convert”, 
            content:”Please convert and send”
            message signature:,
            to recipient:,
            cc recipient:,
            bcc recipient:
        }


    tell fmtMsg
                    -- 3. format the text/content etc of this newly made message
        set font of content to theFont
        set size of content to (theSize)
        -- set visible to true

                    -- 4. send this newly formatted message
        send

                    -- 5. disregard the original one.
                    -- help?
    end tell


end tell

干杯。

4

1 回答 1

1

我没有那么多地使用 Mail,但我编写了一个应该完成这项工作的脚本......

set the mail_recipient to the text returned of (display dialog "To:" default answer "")
set the mail_subject to the text returned of (display dialog "Subject:" default answer "")
set the mail_content to the text returned of (display dialog "Enter your message here (for a new line type \"\\n\"):" default answer "")
set prevTIDs to AppleScript's text item delimiters
set AppleScript's text item delimiters to "\\" & "n"
set this_text to every text item of the mail_content
set AppleScript's text item delimiters to return
set the mail_content to this_text as string
tell application "Mail"
    tell (make new outgoing message with properties {visible:true, subject:mail_subject, content:mail_content})
        make new to recipient at the end of to recipients with properties {address:mail_recipient}
        send
    end tell
end tell

我没有在脚本中添加错误检查(检查收件人的有效地址)。

如您所说,您无法更改收件人的字体;这可能被视为骚扰。

如果此脚本不满意,请告诉我,我会为您更改。:)

更新:我刚刚阅读了将 AppleScript 与 Mail 一起使用的内容,并且刚刚意识到 Mail 对 AppleScript 有很大的限制。我认为你最好的选择是使用GUI Scripting. 这个脚本有点hacky,但它应该可以工作。

tell application "System Events" to tell process "Mail" to set the mail_subject to (get the value of the first text box)
tell application "Mail" to set this_message to the content of the first message of mailbox "Sent" whose subject is the mail_subject

更新 2:

tell application "System Events"
    tell process "Mail"
        set the mail_recipient to (get the value of the first text field)
        set the mail_subject to (get the value of the fourth text field)
        set the mail_content to (get the value of the last text field)
        my create_new_message(mail_recipient, mail_subject, mail_content)
    end tell
end tell

on create_new_message(recipient, subject, content)
    tell application "Mail"
         quit saving no
         activate
         tell (make new outgoing message with properties {subject:|subject|, content:|content|)
             make new recipient at the end of to recipients with properties {address:|recipient|}
             send
         end tell
    end tell
end create_new_message
于 2011-09-04T18:21:14.953 回答