Freigeben über


IMAPIFolder::CopyMessages

Gilt für: Outlook 2013 | Outlook 2016

Kopiert oder verschiebt eine oder mehrere Nachrichten.

HRESULT CopyMessages(
  LPENTRYLIST lpMsgList,
  LPCIID lpInterface,
  LPVOID lpDestFolder,
  ULONG_PTR ulUIParam,
  LPMAPIPROGRESS lpProgress,
  ULONG ulFlags
);

Parameter

lpMsgList

[in] Ein Zeiger auf ein Array von ENTRYLIST-Strukturen , die die zu kopierende oder zu verschiebende Nachricht identifizieren.

lpInterface

[in] Ein Zeiger auf den Schnittstellenbezeichner (Interface Identifier, IID), der die Schnittstelle darstellt, die für den Zugriff auf den Zielordner verwendet werden soll, auf den der lpDestFolder-Parameter verweist. Die Übergabe von NULL führt dazu, dass der Dienstanbieter die Standardordnerschnittstelle IMAPIFolder : IMAPIContainer zurückgibt. Clients müssen NULL übergeben. Andere Aufrufer können den lpInterface-Parameter auf IID_IUnknown, IID_IMAPIProp, IID_IMAPIContainer oder IID_IMAPIFolder festlegen.

lpDestFolder

[in] Ein Zeiger auf den geöffneten Ordner, um die kopierten oder verschobenen Nachrichten zu empfangen.

ulUIParam

[in] Ein Handle für das übergeordnete Fenster aller Dialogfelder oder Fenster, die von dieser Methode angezeigt werden. Der ulUIParam-Parameter wird ignoriert, es sei denn, der Client legt das flag MESSAGE_DIALOG im ulFlags-Parameter fest und übergibt NULL im lpProgress-Parameter .

lpProgress

[in] Ein Zeiger auf ein Statusobjekt, das eine Statusanzeige anzeigt. Wenn NULL in lpProgress übergeben wird, zeigt der Nachrichtenspeicheranbieter mithilfe der MAPI-Statusobjektimplementierung eine Statusanzeige an. Der lpProgress-Parameter wird ignoriert, es sei denn, das flag MESSAGE_DIALOG ist in ulFlags festgelegt.

ulFlags

[in] Eine Bitmaske von Flags, die steuert, wie der Kopier- oder Verschiebungsvorgang ausgeführt wird. Die folgenden Flags können festgelegt werden:

MAPI_DECLINE_OK

Weist den Nachrichtenspeicheranbieter an, sofort MAPI_E_DECLINE_COPY zurückzugeben, wenn er IMAPIFolder::CopyMessages implementiert, indem die IMAPISupport::D oCopyTo - oder IMAPISupport::D oCopyProps-Methode des Unterstützungsobjekts aufgerufen wird .

MESSAGE_DIALOG

Zeigt eine Statusanzeige an, während der Vorgang fortgesetzt wird.

MESSAGE_MOVE

Die Nachricht oder Die Nachrichten müssen verschoben werden, anstatt zu kopieren. Wenn MESSAGE_MOVE nicht festgelegt ist, werden die Nachrichten kopiert.

Rückgabewert

S_OK

Die Nachricht oder nachrichten wurden erfolgreich kopiert oder verschoben.

MAPI_E_DECLINE_COPY

Der Anbieter implementiert diese Methode durch Aufrufen einer Unterstützungsobjektmethode, und der Aufrufer hat das MAPI_DECLINE_OK-Flag übergeben.

MAPI_W_PARTIAL_COMPLETION

Der Aufruf war erfolgreich, aber nicht alle Einträge wurden erfolgreich kopiert oder verschoben. Wenn diese Warnung zurückgegeben wird, sollte der Aufruf als erfolgreich behandelt werden. Verwenden Sie zum Testen auf diese Warnung das Makro HR_FAILED . Weitere Informationen finden Sie unter Verwenden von Makros für die Fehlerbehandlung.

Hinweise

Die IMAPIFolder::CopyMessages-Methode kopiert oder verschiebt Nachrichten in einen anderen Ordner.

Nachrichten, die mit Lese-/Schreibberechtigung geöffnet werden, können verschoben oder kopiert werden.

Hinweise für Implementierer

Wenn Sie Nachrichten in einen anderen Nachrichtenspeicher kopieren, ohne die IMAPISupport::CopyMessages-Methode zu verwenden, müssen Sie zunächst IMAPIFolder::SetReadFlags mit festgelegtem GENERATE_RECEIPT_ONLY-Flag aufrufen. Der empfangende Nachrichtenspeicher ist nicht für das Generieren von Leseberichten für die kopierten oder verschobenen Nachrichten verantwortlich. Wenn Sie IMAPISupport::CopyMessages aufrufen, um IMAPIFolder::CopyMessages zu implementieren, rufen Sie SetReadFlags nicht auf. MAPI ruft sie auf.

Ihre Implementierung kann die Nachrichten in beliebiger Reihenfolge verschieben oder kopieren und Lesevorgänge status Berichten in beliebiger Reihenfolge generieren. Das heißt, Sie können das Kopieren von Nachrichten beenden, bevor Sie einen der lese-status-Berichte generieren, oder die Berichte senden, bevor Die Implementierung den Kopiervorgang startet. Leseberichte sollten jedoch für alle zu kopierenden Nachrichten gesendet werden, unabhängig davon, ob die Kopie erfolgreich war.

Wenn der Kopier- oder Verschiebungsvorgang mehrere Nachrichten umfasst, führen Sie den Vorgang so vollständig wie möglich aus. Beenden Sie den Vorgang nicht vorzeitig, es sei denn, es tritt ein Fehler auf, der außerhalb Ihrer Kontrolle liegt, z. B. nicht genügend Arbeitsspeicher, nicht genügend Speicherplatz auf dem Datenträger oder beschädigung im Nachrichtenspeicher.

Versuchen Sie, Eingabebezeichner für Verschiebungs- oder Kopiervorgänge beizubehalten. Sie sollten auch Eintragsbezeichner beibehalten, obwohl dies nicht erforderlich ist.

Senden Sie Benachrichtigungen, wenn Sie Nachrichten verschieben oder kopieren, sodass Clients gewarnt werden, dass ihre Aufrufe der IMAPIProp::SaveChanges-Methoden der Nachrichten fehlschlagen können.

Schließen Sie die status einer Nachricht nicht in den Kopier- oder Verschiebungsvorgang ein. Das Verschieben oder Kopieren einer Nachricht status die Leistung stark beeinträchtigt.

Hinweise für Aufrufer

Verwenden Sie IMAPIFolder::CopyMessages , um Suchergebnisordner aufzufüllen, in denen Nachrichten häufig nach übergeordneten Ordnern gruppiert werden.

Erwarten Sie diese Rückgabewerte unter den folgenden Bedingungen.

Bedingung R�ckgabewert
IMAPIFolder::CopyMessages hat jede Nachricht erfolgreich kopiert oder verschoben. S_OK
IMAPIFolder::CopyMessages konnte jede Nachricht nicht erfolgreich kopieren oder verschieben. MAPI_W_PARTIAL_COMPLETION
IMAPIFolder::CopyMessages konnte nicht abgeschlossen werden. Beliebiger Fehlerwert

Wenn IMAPIFolder::CopyMessages nicht abgeschlossen werden kann, gehen Sie nicht davon aus, dass keine Arbeit ausgeführt wurde. IMAPIFolder::CopyMessages konnte möglicherweise eine oder mehrere Nachrichten kopieren oder verschieben, bevor der Fehler auftritt.

Siehe auch

IMAPIFolder : IMAPIContainer