如何在不将其保存到新位置的情况下访问C#中的Outlook电子邮件附件?
-
05-07-2019 - |
题
我在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缓存模式时。
不隶属于 StackOverflow