IMAPIFolder::DeleteMessages

适用于:Outlook 2013 | Outlook 2016

删除一个或多个邮件。

HRESULT DeleteMessages(
  LPENTRYLIST lpMsgList,
  ULONG_PTR ulUIParam,
  LPMAPIPROGRESS lpProgress,
  ULONG ulFlags
);

参数

lpMsgList

[in]指向包含要删除的消息数的 ENTRYLIST 结构的指针,以及标识消息的 ENTRYID 结构的数组。

ulUIParam

[in]进度指示器的父窗口的句柄。 除非 ulFlags 参数中设置了 MESSAGE_DIALOG 标志,否则忽略 ulUIParam 参数。

lpProgress

[in]指向显示进度指示器的进度对象的指针。 如果在 lpProgress 中传递 NULL,则消息存储提供程序使用 MAPI 进度对象实现显示进度指示器。 除非在 ulFlags 参数中设置了 MESSAGE_DIALOG 标志,否则忽略 lpProgress 参数。

ulFlags

[in]控制消息删除方式的标志的位掩码。 可以设置以下标志:

DELETE_HARD_DELETE

永久删除所有邮件,包括软删除的消息。

MESSAGE_DIALOG

在操作继续时显示进度指示器。

返回值

S_OK

指定的消息已成功删除。

MAPI_W_PARTIAL_COMPLETION

调用成功,但并非所有消息都已成功删除。 返回此警告时,应将调用处理为成功。 若要测试此警告,请使用 HR_FAILED 宏。 有关详细信息,请参阅 使用宏进行错误处理

备注

IMAPIFolder::D eleteMessages 方法从文件夹中删除邮件。 无法删除不存在、已移动到其他位置、具有读/写权限打开或当前提交的邮件。

针对实现者的说明

当删除操作涉及多个邮件时,请尽可能完全地为每个文件夹执行操作,即使一个或多个邮件无法删除也是如此。 除非发生无法控制的故障(例如内存不足、磁盘空间不足或消息存储损坏),否则不要过早停止操作。

给调用方的说明

在以下条件下,应使用这些返回值。

Condition 返回值
DeleteMessages 已成功删除每条消息。 S_OK
DeleteMessages 无法成功删除每个邮件和子文件夹。 MAPI_W_PARTIAL_COMPLETION或MAPI_E_NOT_FOUND
DeleteMessages 无法完成。 除 MAPI_E_NOT_FOUND 之外的任何错误值

DeleteMessages 无法完成时,不要假定未完成任何工作。 在遇到错误之前,DeleteMessages 可能已经能够删除一个或多个消息。

DeleteMessages 根据消息存储的实现返回MAPI_W_PARTIAL_COMPLETION或MAPI_E_NOT_FOUND。

MFCMAPI 引用

有关 MFCMAPI 示例代码,请参阅下表。

文件 函数 Comment
FolderDlg.cpp
CFolderDlg::OnDeleteSelectedItem
MFCMAPI 使用 IMAPIFolder::D eleteMessages 方法删除指定的消息。

另请参阅

ENTRYID

ENTRYLIST

IMAPIFolder : IMAPIContainer

MFCMAPI 代码示例

使用宏进行错误处理