簡體   English   中英

使用C#將Outlook郵件附件轉換為字節數組

[英]Converting a Outlook mail attachment to byte array with C#

公平警告 :我是C#和Outlook的新手,所以請耐心等待。

我一直在用Outlook中的電子郵件試驗我正在構建的快速而臟的插件,但插件需要我將附加文件發送到不同的系統。

長話短說; 為了做到這一點,我需要將Outlook項目的郵件附件轉換為byte數組。

到目前為止我所擁有的(完整的代碼顯然比這長了幾英里,但我確信我們都有更好的事情要做,而不是坐下來閱讀頁面並向下翻頁代碼):

Outlook.Selection sel = control.Context as Outlook.Selection;
Outlook.MailItem mail = sel[1];
Outlook.Attachment a = mail.Attachments[0];

問題是,我不知道如何將a轉換為byte數組。

PS:我知道關於如何將byte數組轉換為郵件有大約10億個答案,但沒有解釋如何讓它以相反的方式運行。

編輯1:我寧願不必保存文件。

Dmitry提出的第二種方法(開放附件作為二進制流)也可以在托管代碼中實現。 它使用PropertyAccessor接口,該接口可用於C#中的Attachment對象。 以下是我在自己的項目中成功使用的一些示例代碼:

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);

我的示例代碼基於Ken Getz,MCW Technologies,LLC提供的如何:修改Outlook電子郵件附件主題作為MSDN文檔的一部分。

你也可以

  1. 將附件( Attachment.SaveAsFile )保存到文件,然后將該文件作為字節流打開。
  2. 如果您使用的是C ++或Delphi,則可以使用IAttach :: OpenProperty (PR_ATTACH_DATA_BIN,IID_IStream,..)將附件作為IStream COM對象打開。
  3. 如果使用Redemption是一個選項,它會在AttachmentRDOAttachment對象上公開AsArray屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM