我通过调用MailItem.copy()函数在我的收件箱文件夹中创建了一个邮件副本,然后删除了新创建的邮件项目。
以下是示例代码:
IDispatch * lDispatch;
_MailItemPtr lReadModeMailItem;
HRESULT lReturn = mMailItem->Copy(&lDispatch);
if (lReturn != S_OK)
{
return;
}
lReturn = lDispatch->QueryInterface(IID__MailItem, (LPVOID*)&lReadModeMailItem);
if (lReturn != S_OK || lReadModeMailItem == NULL)
{
return;
}
lReadModeMailItem->Close(olDiscard);
HRESULT lMyRet = lReadModeMailItem->Delete();
if (lMyRet != S_OK)
{
return;
}
lDispatch->Release();
执行完此代码后,我的收件箱文件夹中会创建2个新邮件。 然后,如果我移动到任何其他文件夹并返回收件箱或重新启动Outlook,则会保留1个新邮件项目。
为什么收件箱中还有1个额外的邮件项目,即使我调用了MailItem.Delete()函数? 如何永久删除使用MailItem.Copy()创建的邮件项目?
答案 0 :(得分:0)
这是Outlook中缺少IMAP帐户。
您可以考虑使用以下变通方法来解决此类问题:
Explorer.CurrentFolder
属性以编程方式在Outlook中切换文件夹,该属性允许设置表示资源管理器中显示的当前文件夹的Folder对象。