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

时间:2015-11-16 13:17:54

标签: vba outlook attachment

我试图在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

2 个答案:

答案 0 :(得分:0)

Attachment班级没有提供此类方法。您需要将附加文件保存到磁盘,然后重新将其重新附加到另一个Outlook项目。

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

答案 1 :(得分:0)

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

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

如果使用Redemption是一个选项,它会公开RDODocumentItem并允许直接创建文档项目(请参阅示例)。