2017-02-09 5 views
2

En partant de mon previous question, si je définis le corps d'un MimeMessage les pièces jointes, les parties de corps, et tous les détails sont supprimés. Comment puis-je contourner cela?La définition du corps d'un mimemessage supprime d'autres détails

foreach (MimeKit.MimeEntity bodyPart in tnefMessage.BodyParts) 
{ 
    if (!bodyPart.IsAttachment) 
    { 
     using (MemoryStream ms = new MemoryStream()) 
     { 
      bodyPart.WriteTo(ms); 

      ms.Flush(); 
      ms.Position = 0; 
      using (StreamReader sr = new StreamReader(ms)) 
      { 
       //Read in the contents until we get to the rtf 
       string line; 
       while (!(line = sr.ReadLine()).StartsWith("{") && !line.StartsWith("\\")) { } 

       tnefMessage.Body = new MimeKit.TextPart("plain") 
       { 
        Text = RTFToText($"{line}{sr.ReadToEnd()}") 
       }; 
      } 
     } 
    } 
} 

static string RTFToText(string rtf) 
{ 
    string text = string.Empty; 
    System.Threading.Thread thread = new System.Threading.Thread(() => 
    { 
     using (System.Windows.Forms.RichTextBox rtb = new System.Windows.Forms.RichTextBox()) 
     { 
      rtb.Rtf = rtf; 
      text = rtb.Text; 
     } 
    }); 
    thread.SetApartmentState(System.Threading.ApartmentState.STA); 
    thread.Start(); 
    thread.Join(); 

    return text; 
} 

Répondre

0

Ceci est parce que vous mettez le corps en html seulement, vous devez le mettre à mélanger et ajouter de nouveau les pièces jointes:

Multipart multipart = new Multipart("mixed"); 
multipart.Add(new MimeKit.TextPart("plain") 
{ 
    Text = RTFToText($"{line}{sr.ReadToEnd()}") 
}); 

foreach (MimeEntity attachment in tnefMessage.Attachments) 
{ 
    multipart.Add(attachment); 
} 

tnefMessage.Body = multipart;