将附件从电子邮件移动到另一个邮箱

Moving an attachment from an email into another mailbox

我正在尝试在 Outlook 中组合一些代码,以从收到的邮件中提取附件并将​​它们移动到 Outlook 中的另一个文件夹中。

我可以轻松地移动整封邮件,并且我还弄清楚了如何将附件保存到驱动器,但这些都不是我要找的。

我正在看下面的内容,但我猜没有 Attachment.Move 类似于 MailItem.Move。

有人对我如何实现这一目标有任何建议吗?任何帮助将不胜感激。

Sub test1()

Dim olFolder As MAPIFolder
Set olFolder = Application.GetNamespace("MAPI").Folders("Mailbox - Test").Folders("Inbox")

Dim Item As Object

For Each Item In olFolder.Items
    Set oMail = Item
    For Each att In oMail.Attachments
        att.Move Application.GetNamespace("MAPI").Folders("Enterprise Connect").Folders("Test")
    Next
Next
End Sub

Attachment class 没有提供这样的方法。您需要将附件保存到磁盘,然后重新附加到另一个 Outlook 项目。

您可能会发现 Getting Started with VBA in Outlook 2010 文章很有帮助。

附件在文件夹中不作为独立实体存在 - 如果邮件只有一个附件,您会看到什么。该项目的消息 class 是 IPM.Document.* - 当您双击这样的项目时,Outlook 会足够智能地打开附件而不是显示检查器。用 OutlookSpy 看看这样的项目(我是它的作者 - 点击 IMessage 和 Item 按钮)。

Outlook 对象模型不允许直接创建 DocumentItem 对象。但是您可以创建一个常规 MailItem 对象,使用 MailItem.Attachments.Add 添加附件,然后适当地重置 MessageClass 属性 - 例如对于“.txt”附件,查找 HKEY_CLASSES_ROOT\.txt 注册表项,读取默认值,将其附加到消息 class (IPM.Note.txtfile).

如果使用 Redemption (I am also its author) is an option, it exposes the RDODocumentItem 并允许直接创建文档项(参见示例)。