2

我有一个 AppleScript 应用程序,它创建一封电子邮件(在 Mail.app 中),其中包含我通过对话框选择的选项的附件。文本模板以.rtf格式存储,因此非程序员可以根据自己的意愿更改文本模板。

我可以从.txt纯文本文件创建电子邮件,但是当我导入.rtf文本文件时,它会导入格式命令,这是我不希望在邮件中出现的。

以下是.rtf导入电子邮件的示例:

{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf360 {\fonttbl\f0\fswiss\fcharset0 Helvetica-Light;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\ tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural

\f0\fs24 \cf0 面向英语使用者的技术邮件\

这是我的脚本的一部分:

-- Import the .rtf file and store content in the mycontent variable    
set mycontent to (read "/Users/kiara/Desktop/mailer/technology/tech-en-content.rtf")
…
…
-- create mail from values stored in variables
tell application "Mail"
    set theMessage to make new outgoing message with properties {visible:true, subject:mysubject, content:mycontent}
    tell content of theMessage
        make new attachment with properties {file name:this_file} at after last paragraph
    end tell
end tell

是否可以在没有格式代码的情况下将文件中的格式化文本导入.rtf新邮件(我选择 rtf 是因为大多数粗体和颜色用于格式化文本)?

4

3 回答 3

2

这是另一种方法:

set the clipboard to (read "/Users/kiara/Desktop/mailer/technology/tech-en-content.rtf" as «class RTF »)

tell application "Mail"
    activate
    set theMessage to make new outgoing message with properties {visible:true, subject:"mysubject"}
end tell

tell application "System Events"
    tell process "Mail"
        repeat until focused of UI element 1 of scroll area 4 of window 1
            keystroke tab
        end repeat
        keystroke "v" using command down
    end tell
end tell
于 2012-05-18T23:58:58.817 回答
1

我认为 Mail 以纯文本或 html 格式发送电子邮件,而不是 rtf。因此,您需要将电子邮件作为 html 而不是 rtf 发送。请注意,通过 applescript 使用 Mail 发送 html 电子邮件有一个技巧。由于某种原因,您不能将新消息的可见属性设置为 true。如果你这样做是行不通的。

这是如何帮助您的。您可以使用命令行工具 textutil 将 rtf 转换为 html,然后将其作为电子邮件发送。请注意,我在命令中使用“tidy”来确保 html 代码是干净的。

因此,您需要做的就是将收件人的电子邮件地址和主题放入此脚本并运行它...

set emailAddress to "someone@somewhere.com"
set theSubject to "My converted rtf to html"

set rtfFile to choose file with prompt "Choose the RTF file to email as HTML:" without invisibles
set theHTML to do shell script "/usr/bin/textutil " & " -stdout -format rtf -convert html " & quoted form of POSIX path of rtfFile & " | /usr/bin/tidy -b -utf8"

tell application "Mail"
    set newMessage to make new outgoing message at end of outgoing messages with properties {visible:false}
    tell newMessage
        make new to recipient at end of to recipients with properties {address:emailAddress}
        set subject to theSubject
        set html content to theHTML
        send
    end tell
end tell
于 2012-05-18T22:33:19.607 回答
0

adayzdone 答案对我有用 - 或多或少。在 Mac os X 10.15.6 、 Mail 13.4 下,滚动区域位于另一个位置/索引处。而不是使用keystroke tab来获取内容区域,另一种方法是

set value of attribute "AXFocused" of UI element of scroll area 1 of window 1 to true

如果您需要查找滚动区域或识别其他 UI 元素 - 您可能想要使用

on FindScrollAreas()
    set Indices to {}
    set the clipboard to "hello World"
    tell application "System Events"
        tell process "Mail"
            activate
            set i to 1
            repeat with UIElement in UI elements of front window
                -- button, text field, scroll area, static text
                if class of UIElement is scroll area then
                    set end of Indices to i
                end if
                set i to i + 1
            end repeat
        end tell
    end tell
    return Indices
end FindScrollAreas

并且还有使用 Automator 的绝妙方法观看我获取菜单项: 请参阅这篇文章
(您必须将事件从 Automator 复制粘贴到某个文本编辑器才能获得一些相应的 AppleScript)

并且有 Xcode -> Xcode(menu) -> Open Developer Tool -> Accessibility Inspector - 但我发现很难将信息传输到 applescript

希望有帮助,最好的汤姆

于 2020-12-01T17:04:03.213 回答