2017-10-12 47 views
0

我一直在試圖在C#中創建一個Outlook插件。 我想要做的是獲取附件,並將其轉換爲base64以將其發送到我的服務器。 我不能找出一種方法來做到這一點。唯一的解決方案似乎是,保存文件,讀取它,將其轉換爲base64並刪除它,這看起來非常浪費。前景附件base64在飛C#

這就是我現在要做的。

  for (int j = 1; j <= email.Attachments.Count; j++) 
      { 

       json = "{ 
         " \"Mail_Attachment_BLOB\" :\" " + email.Attachments[j] "\" }"; 

       SendToApi("Attachment", json); 

      } 

任何想法?

回答

0

如果您嘗試在不將附件保存爲文件的情況下訪問附件內容,Outlook對象模型不會對您有所幫助。您可以使用擴展MAPI(僅限C++或Delphi)並以流(IAttach::OpenProperty(PR_ATTACH_DATA_BIN, IID_IStream, ...))或使用Redemption打開附件數據 - 其附件對象顯示AsText,AsArray等屬性。

set Session = CreateObject("Redemption.RDOSession") 
    Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
    set item = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID) 
    for each attach in item.Attachments 
    MsgBox attach.AsText 
    next