我在C#中使用Microsoft.Office.Interop.Outlook
来访问邮箱并查找包含特定文件附件的邮件。我需要与附件进行交互。
目前,我正在将文件保存到新位置并从那里访问它。这种复制过程正在减慢我的速度。理想情况下,我希望从存储在内存中的任何位置访问该文件,但Outlook.Attachment.PathName
字段返回null。
邮件存储在Exchange服务器上。
是否可以直接访问它们,还是需要继续保存文件?
答案 0 :(得分:3)
Outlook.Attachment.PathName
表示磁盘位置。附件是一个文件;如果你想与它进行交互,你必须像对待文件一样对待它,这意味着将它保存到本地磁盘。
Outlook.Attachment
对象实际上并不包含附件;它包含指向附件的链接,以及一些相关的元数据。
答案 1 :(得分:3)
我不知道它是否可能以任何方式通过Outlook对象模型,但MAPI肯定允许你这样做。
您需要打开邮件MAPIObject
,IMessage
。从那里使用IMessage::OpenAttach()
,返回IAttach
附件大小存储在PR_ATTACH_SIZE
中,实际数据存储在PR_ATTACH_DATA_BIN
。
与往常一样,Redemption可能更容易实现此目的。
修改强>
通过MAPI进行访问就是Outlook在内部所做的事情 - 应该相当快,至少在使用Exchange缓存模式时。