Outlook Interop Copy MailItem

时间:2010-12-16 20:16:53

标签: com interop outlook add-in

我知道我以前见过这个问题,但我似乎无法再找到它。

我想使用Microsoft Interop将邮件从收件箱复制到不同的文件夹。我知道其他对象,如约会和文件夹都有一个CopyTo()方法,但它没有为MailItem。我现在的方式是调用MailItem.Copy,然后将副本移动到另一个文件夹。我不喜欢这样,因为它会在Outlook的屏幕上引起一些“闪烁”,您可以看到收件箱在复制电子邮件然后移动时增长和缩小。

还有其他解决方案吗?

由于

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

您可以使用扩展MAPI(IMAPIFolder::CopyMessages - 仅限C ++或Delphi)来实现此目的。

如果使用Redemption是一个选项,它会实现RDOMail.CopyTo方法。以下内容应该有效:

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT

  set Item = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID)
  set Folder = Session.GetDefaultFolder(olFolderDeletedItems)

  Item.CopyTo(Folder)