2010-12-16 13 views
2

Ich weiß, ich habe diese Frage schon einmal gesehen, aber ich kann es nicht wieder finden.Outlook Interop Copy MailItem

Ich möchte Microsoft Interop verwenden, um eine E-Mail-Nachricht aus dem Posteingang in einen anderen Ordner zu kopieren. Ich weiß, dass andere Objekte wie Termin und Ordner beide eine CopyTo() -Methode haben, aber für MailItem fehlt. Wie ich es jetzt mache, rufen Sie MailItem.Copy auf und verschieben Sie dann die Kopie in einen anderen Ordner. Ich mag das nicht, weil es ein "Flimmern" auf dem Bildschirm in Outlook verursacht, wo Sie sehen, dass der Posteingang wächst und schrumpft, wenn die E-Mails kopiert und dann verschoben werden.

Gibt es eine andere Lösung?

Dank

Antwort

0

Sie, dass mit Extended MAPI tun können (IMAPIFolder::CopyMessages - C++ oder nur Delphi).

Wenn Redemption eine Option ist, implementiert es RDOMail.CopyTo Methode. So etwas wie das Folgende sollte funktionieren:

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)