我Microsoft.Office.Interop.Outlook
在 C# 中使用来访问邮箱并查找带有特定文件附件的邮件。我需要与附件交互。
目前,我正在将文件保存到新位置并从那里访问它。这个复制过程让我慢了下来。理想情况下,我希望从存储在内存中的任何位置访问该文件,但该Outlook.Attachment.PathName
字段返回 null。
邮件存储在 Exchange 服务器上。
是否可以直接访问它们还是我需要继续保存文件?
我Microsoft.Office.Interop.Outlook
在 C# 中使用来访问邮箱并查找带有特定文件附件的邮件。我需要与附件交互。
目前,我正在将文件保存到新位置并从那里访问它。这个复制过程让我慢了下来。理想情况下,我希望从存储在内存中的任何位置访问该文件,但该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 缓存模式时应该相当快。