0

我在 Outlook 2010 的加载项中使用 IMAPIProp::CopyTo 将当前显示的 IMessage 保存到磁盘上 .msg 文件中的新 IMessage 中。对于驻留在用户邮箱中的邮件,一切正常。

当我尝试使用从磁盘上的 .msg 文件打开并包含附件的消息时,IMAPIProp::CopyTo 返回 0x80070005 (MAPI_E_NO_ACCESS)。从 IMAPIProp::GetLastError 返回的详细信息是:

ulVersion: 0
lpszError: "A resource is busy or you lack sufficient access rights or permissions"
lpszComponent: ""
ulLowLevelError: 71
ulContext: 0

使用 File->Save As 或 File->Save 后,我对 IMAPIProp::CopyTo 的调用也成功了。如果我排除 PR_MESSAGE_ATTACHMENTS,IMAPIProp::CopyTo 也会成功。

Outlook 可能会为成功调用 IMAPIProp::CopyTo 做哪些准备?

4

1 回答 1

2

对于在 MSG 文件之上创建的消息,CopyTo() 不能很好地工作(如果有的话)。您唯一的选择几乎是编写自己的函数来执行 GetPropList,然后一次复制一个属性(当然适当地转换命名属性),然后复制附件和收件人。

于 2012-05-08T16:30:46.943 回答