2010-12-16 76 views
2

我知道我以前見過這個問題,但我似乎無法再找到它。Outlook Interop Copy MailItem

我想使用Microsoft Interop將郵件信息從收件箱複製到不同的文件夾。我知道像約會和文件夾這樣的其他對象都有一個CopyTo()方法,但是它對於MailItem是缺少的。我現在做的方式是調用MailItem.Copy,然後將副本移動到另一個文件夾。我不喜歡這樣做,因爲它會導致Outlook中的屏幕出現一些「閃爍」,您可以看到收件箱隨着電子郵件被複制然後移動而變大和縮小。

有沒有另一種解決方案?

感謝

回答

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)