IMAPIFolder::CopyMessages
適用於:Outlook 2013 |Outlook 2016
複製或移動一或多個訊息。
HRESULT CopyMessages(
LPENTRYLIST lpMsgList,
LPCIID lpInterface,
LPVOID lpDestFolder,
ULONG_PTR ulUIParam,
LPMAPIPROGRESS lpProgress,
ULONG ulFlags
);
參數
lpMsgList
[in] ENTRYLIST 結構陣列的指標,識別要複製或行動的訊息。
lpInterface
[in]介面識別碼的指標 (IID) ,表示要用來存取 lpDestFolder 參數所指向之目的地資料夾的介面。 傳遞 NULL 會導致服務提供者傳回標準資料夾介面 IMAPIFolder: IMAPIContainer。 用戶端必須傳遞 NULL。 其他呼叫端可以將 lpInterface 參數設定為 IID_IUnknown、IID_IMAPIProp、IID_IMAPIContainer 或 IID_IMAPIFolder。
lpDestFolder
[in]開啟資料夾的指標,用來接收複製或移動的訊息。
ulUIParam
[in]這個方法所顯示之任何對話框或視窗之父視窗的句柄。 除非用戶端在 ulFlags 參數中設定MESSAGE_DIALOG旗標,並在 lpProgress 參數中傳遞 NULL,否則會忽略 ulUIParam 參數。
lpProgress
[in]顯示進度指標之進度物件的指標。 如果在 lpProgress 中傳遞 NULL,訊息存放區提供者會使用 MAPI 進度物件實作來顯示進度指示器。 除非在ulFlags中設定MESSAGE_DIALOG旗標,否則會忽略 lpProgress 參數。
ulFlags
[in]控制複製或移動作業完成方式的旗標位掩碼。 您可以設定下列旗標:
MAPI_DECLINE_OK
藉由呼叫支援物件的 IMAPISupport::D oCopyTo 或 IMAPISupport::D oCopyProps 方法來實作 IMAPIFolder::CopyMessages,通知訊息存放區提供者立即傳回MAPI_E_DECLINE_COPY。
MESSAGE_DIALOG
在作業繼續進行時顯示進度指示器。
MESSAGE_MOVE
要移動訊息或訊息,而不是複製。 如果未設定MESSAGE_MOVE,則會複製訊息。
傳回值
S_OK
訊息或訊息已成功複製或移動。
MAPI_E_DECLINE_COPY
提供者會藉由呼叫支持物件方法來實作這個方法,而且呼叫端已傳遞MAPI_DECLINE_OK旗標。
MAPI_W_PARTIAL_COMPLETION
呼叫成功,但並非所有專案都已成功複製或移動。 傳回此警告時,應將呼叫視為成功處理。 若要測試此警告,請使用 HR_FAILED 宏。 如需詳細資訊,請 參閱使用宏進行錯誤處理。
註解
IMAPIFolder::CopyMessages 方法會將訊息複製或移動到另一個資料夾。
以讀取/寫入許可權開啟的訊息可以移動或複製。
實作者注意事項
如果您要將訊息複製到另一個訊息存放區,而不使用 IMAPISupport::CopyMessages 方法,您必須先呼叫已設定GENERATE_RECEIPT_ONLY旗標的 IMAPIFolder::SetReadFlags 。 接收訊息存放區不負責為複製或移動的訊息產生讀取報表。 如果您呼叫 IMAPISupport::CopyMessages 來實 作 IMAPIFolder::CopyMessages,請勿呼叫 SetReadFlags;MAPI 會呼叫它。
您的實作可以依任何順序移動或複製訊息,並依任何順序產生讀取狀態報告。 也就是說,您可以在產生任何讀取狀態報表之前完成複製訊息,或在實作開始複製作業之前傳送報告。 不過,不論複製是否成功,都應該傳送讀取報表以複製所有訊息。
當複製或移動作業牽涉到多個訊息時,請盡可能完整地執行作業。 除非發生超出您控制的失敗,例如記憶體不足、磁碟空間不足或訊息存放區損毀,否則請勿提前停止作業。
嘗試跨移動或複製作業維護項目標識碼。 您也應該保留項目標識碼,但並非必要。
當您移動或複製訊息時傳送通知,讓用戶端預先確認其對訊息 IMAPIProp::SaveChanges 方法的呼叫可能會失敗。
請勿在複製或移動作業中包含訊息的狀態。 移動或複製訊息狀態會大幅影響效能。
呼叫者注意事項
使用 IMAPIFolder::CopyMessages 填入搜尋結果資料夾,其中訊息通常會依父資料夾分組。
在下列情況下,預期這些傳回值。
Condition | 傳回值 |
---|---|
IMAPIFolder::CopyMessages 已成功複製或移動每則訊息。 | S_OK |
IMAPIFolder::CopyMessages 無法成功複製或移動每則訊息。 | MAPI_W_PARTIAL_COMPLETION |
IMAPIFolder::CopyMessages 無法完成。 | 任何錯誤值 |
當 IMAPIFolder::CopyMessages 無法完成時,請勿假設未完成任何工作。 IMAPIFolder::CopyMessages 在遇到錯誤之前,可能已經能夠複製或移動一或多個訊息。