2016-12-19 21 views
0

別のメールに添付される前に受け取ったメールを圧縮しようとしています。だから私はジップ部分にこだわっている。 zipしようとしているオブジェクトはCOMオブジェクトであり、シリアル化をサポートしていません。これで進歩を助けることができるアイデアは大歓迎です!VSTO Outlookアドイン:Zip COMオブジェクト

そして、これまでのコード(selObjectは、COMオブジェクトです):MSGファイルとして

private void Report_Malicious_Email_Click(object sender, RibbonControlEventArgs e) 
{ 
    // selObject este mailul selectat 
    Object selObject = this.Application.ActiveExplorer().Selection[1]; 
    if (selObject is Outlook.MailItem) // de aici incepe logica pentru forward cu atasament! 
    { 
     using (MemoryStream msCompressed = new MemoryStream()) 
     using (GZipStream gZipStream = new GZipStream(msCompressed, CompressionMode.Compress)) 
     using (MemoryStream msDecompressed = new MemoryStream()) 
     { 
      new BinaryFormatter().Serialize(msDecompressed, selObject); 
      byte[] byteArray = msDecompressed.ToArray(); 

      gZipStream.Write(byteArray, 0, byteArray.Length); 
      gZipStream.Close(); 
      msCompressed.ToArray(); 
     } 

     Outlook.MailItem eMail = 
      (Outlook.MailItem)this.Application.CreateItem(Outlook.OlItemType.olMailItem); 
     eMail.Subject = subjectEmail; 
     eMail.To = toEmail; 
     eMail.Body = bodyEmail; 
     eMail.Attachments.Add(selObject); 
     eMail.Send(); 
    } 
} 

答えて

0

保存メッセージ(MailItem.SaveAs(...、olMsg))、その後、ファイルを圧縮します。

関連する問題