2016-12-19 105 views
0

我想压缩收到的电子邮件之前,它被附加到另一封电子邮件。所以我坚持使用zip部分。我试图压缩的对象是一个COM对象,不支持序列化。任何可以帮助我进步的想法都是值得欢迎的!VSTO Outlook加载项:邮编COM对象

而且到目前为止的代码(selObject是COM对象):

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

保存信息为MSG文件(MailItem.SaveAs(...,olMsg)),然后压缩文件。

相关问题