使用C#将Outlook邮件附件转换为字节数组

ViR*_*LiC 4 c# email outlook

合理的警告:我是C#Outlook 的新手,所以请耐心等待。

我一直在尝试在Outlook中使用电子邮件来构建自己的快速又脏的插件,但是该插件要求我将附件发送到其他系统。

长话短说; 为此,我需要将Outlook项目的邮件附件转换为byte数组。

到目前为止,我所拥有的(完整的代码显然比这要长得多,但是我敢肯定,与坐下来阅读代码的上下一页相比,我们所有人都有更好的事情要做):

Outlook.Selection sel = control.Context as Outlook.Selection;
Outlook.MailItem mail = sel[1];
Outlook.Attachment a = mail.Attachments[0];
Run Code Online (Sandbox Code Playgroud)

问题是,我不知道如何转换abyte数组。

PS:关于如何将byte数组转换为邮件,我知道大约有十亿个答案,但是没有一个可以解释如何使数组反过来运行的答案。

编辑1:我宁愿不必保存文件。

小智 5

Dmitry提出的第二种方法(以二进制流形式打开附件)也可以在托管代码中实现。它使用PropertyAccessor接口,该接口可用于C#中的附件对象。这是我在自己的项目中成功使用的一些示例代码:

const string PR_ATTACH_DATA_BIN = "http://schemas.microsoft.com/mapi/proptag/0x37010102";

Outlook.Attachment attachment = mail.Attachments[0];  

// Retrieve the attachment as a byte array
var attachmentData =
    attachment.PropertyAccessor.GetProperty(PR_ATTACH_DATA_BIN);
Run Code Online (Sandbox Code Playgroud)

我的示例代码基于MCW Technologies,LLCKen Getz作为MSDN文档的一部分提供的“ 如何:修改Outlook电子邮件的附件”主题。