7

Microsoft.Office.Interop.Outlook在 C# 中使用来访问邮箱并查找带有特定文件附件的邮件。我需要与附件交互。

目前,我正在将文件保存到新位置并从那里访问它。这个复制过程让我慢了下来。理想情况下,我希望从存储在内存中的任何位置访问该文件,但该Outlook.Attachment.PathName字段返回 null。

邮件存储在 Exchange 服务器上。

是否可以直接访问它们还是我需要继续保存文件?

4

2 回答 2

3

Outlook.Attachment.PathName表示磁盘位置。附件是一个文件;如果你想与它交互,你必须把它当作一个文件,这意味着将它保存到本地磁盘。

Outlook.Attachment对象实际上并不包含附件;它包含指向附加文件的链接,以及一些相关的元数据。

于 2009-10-22T16:52:09.660 回答
3

我不知道它是否可以通过 Outlook 对象模型以任何方式实现,但 MAPI 肯定允许您这样做。

您需要打开消息MAPIObject,一个IMessage. 从那里使用IMessage::OpenAttach(),它返回一个IAttach.
附件大小存储在 中PR_ATTACH_SIZE,实际数据存储在 中PR_ATTACH_DATA_BIN

与往常一样,Redemption可能有更简单的方法来做到这一点。

编辑:
无论如何,通过 MAPI 访问是 Outlook 在内部所做的 - 至少在使用 Exchange 缓存模式时应该相当快。

于 2009-10-25T14:28:21.937 回答