2017-02-09 77 views
2

领导从我previous question,如果我设置一个MimeMessage附件,正文部分,从所有的细节被删除的身体。我怎样才能解决这个问题?设置一个MimeMessage的去除体内的其他细节

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

回答

0

这是因为你设置的身体为HTML,你需要将其设置为混合,再添加附件:

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; 
相关问题