使用AppleScript在Mail中复制草稿邮件

时间:2014-06-17 22:41:18

标签: applescript osx-mavericks

我在Mail&#39的草稿文件夹中有一条消息。我想复制它(保留其附件),添加TO地址,然后发送它(复制)。

我无法引用副本。

tell application "Mail"

  set theTemplate to the (first message of drafts mailbox)

  set theDuplicate to (duplicate theTemplate to drafts mailbox)

  // error: The variable theDuplicate is not defined.
  display dialog ((subject of theDuplicate) as rich text)

  tell theDuplicate

    -- add the recipient
    make new to recipient at end of to recipients with properties {name:("Foo Bar"), address:("foo.bar@domain.com")}

    -- send message
    send

  end tell

end tell

duplicate上的邮件词典条目表明我正在尝试做的事情得到支持:

  

复制v:复制对象。

     

重复说明符:要复制的对象。

     

[位置说明符]:新副本的位置。

     

[属性记录]:要在新副本中设置的属性或立即复制。

我不理解什么?

1 个答案:

答案 0 :(得分:2)

您缺少一个方面: duplicate命令不会返回它创建的重复 - 您可以通过缺少字典中的→ <type>

因此您需要使用单独的commnand 重复后获取对副本的引用。

可悲的是,AppleScript还没有变得困难:

drafts mailbox似乎是与定义的特定电子邮件帐户关联的各种特定草稿邮箱的抽象

定位摘要 drafts mailbox适用于访问现有草稿,但当复制到草稿邮箱时,似乎是必须定位特定的草稿邮箱。

您可以通过检查执行Events命令后在AppleScript编辑器中单击set theTemplate to the (first message of drafts mailbox)时报告的内容来确定存储草稿的实际特定草稿邮箱:它将显示参考到草稿所在的特定邮箱,例如,如果是Gmail帐户:

message id 153525 of mailbox "Drafts (Gmail)"

如果您不想对特定引用进行硬编码,则循环mailboxes of drafts mailbox以查找包含感兴趣草稿的特定子邮箱。

只有在定位特定草稿邮箱时,duplicate命令才能正常工作(至少可见 - 可以想象复制到 abstract < / em>邮箱正常工作且Mail.app有效,但仅仅显示 - 但是,drafts mailbox中的邮件数量这一事实>改变暗示否则)。

但乐趣并不止于此:您无法在草稿消息上设置收件人属性并直接发送 :您必须将其转换为{{1首先,还有没有直接的方法来执行此转换(我知道)。 作为一种解决方法,下面的代码使用outgoing message命令,但是,它有副作用 - 请参阅注释。

redirect