2016-12-19 4 views
0

Ich versuche, eine empfangene E-Mail zu zippen, bevor sie an eine andere E-Mail angehängt wird. Also bin ich mit dem Reißverschlussteil festgefahren. Das Objekt, das ich zippen möchte, ist ein COM-Objekt und unterstützt die Serialisierung nicht. Irgendwelche Ideen, die mir dabei helfen können, sind willkommen!VSTO Outlook-Add-in: Zip-COM-Objekt

Und der Code so weit (selObject ist das COM-Objekt):

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

Antwort

0

speichern Nachricht als MSG-Datei (MailItem.SaveAs (..., olMsg)), RV dann die Datei.