我知道我以前见过这个问题,但我似乎无法再找到它。
我想使用Microsoft Interop将邮件从收件箱复制到不同的文件夹。我知道其他对象,如约会和文件夹都有一个CopyTo()方法,但它没有为MailItem。我现在的方式是调用MailItem.Copy,然后将副本移动到另一个文件夹。我不喜欢这样,因为它会在Outlook的屏幕上引起一些“闪烁”,您可以看到收件箱在复制电子邮件然后移动时增长和缩小。
还有其他解决方案吗?
由于
答案 0 :(得分:3)
伤心但这是唯一的方法......
查看http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/3dd2bd06-5738-4fb2-b628-0d7ab2be8157/
答案 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)