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

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

邮件存储在Exchange服务器上。

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

有帮助吗?

解决方案

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

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

其他提示

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

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

与往常一样, Redemption 可能更容易实现此目的。

修改结果 通过MAPI进行访问就是Outlook在内部所做的事情 - 应该相当快,至少在使用Exchange缓存模式时。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top