创建邮件时在 Outlook 加载项 (C#) 中读取 Outlook 附件内容

Read Outlook attachment content in Outlook add-in (C# ) while creating a mail

我正在尝试在 VS 2010 中开发一个 outlook 插件。它的目的是扫描电子邮件正文和附件内容中的某些关键字,如果找到任何此类关键字,则应阻止电子邮件发送。 我能够阅读电子邮件正文和主题并进行验证,但我不明白如何在撰写邮件时阅读附件内容(txt 文件)。

attachment.GetTemporaryPath() 没有提供附件路径。我想这只适用于收件箱中的邮件。 我发现的一种方法是将附件保存到临时文件夹并读取它 (attachment.saveAs())。 这是在撰写邮件时阅读附件内容的唯一方法吗?

可能重复:C# Outlook 2007 - How do I access attachment contents directly from my addin?

但是按照那里的建议,我不能使用救赎。还有其他办法吗?

是的,将附件数据保存到临时文件并读取它是唯一的方法。理论上,您可以使用 Attachment.PropertyAccessor.GetProperty 来读取 PR_ATTACH_DATA_BIN 属性,但是对于大型 (> 64kB) 文件,您会 运行 遇到问题。

您也可以使用扩展 MAPI 将附件数据打开为 IStream (IAttach::OpenProperty(PR_ATTACH_DATA_BIN, IID_IStream)),但只能通过 C++ 或 Delphi 访问。您可以使用 Safe*Item 对象公开的 Redemption (any language - I am its author) that wraps Extended MAPI and exposes AsArray and AsText properties on both RDOAttachment and the Attachment 对象。