2015-05-29 49 views
0

richtextbox從具有圖像和文本的word文件中獲取其值。下面的代碼只發送文本而不是圖像。我怎樣才能讓它同時發送?使用richtextbox在wpf中發送郵件

using (MailMessage mm = new MailMessage("[email protected]","[email protected]")) 
     { 
      mm.Subject = "demo"; 


      TextRange txc = new TextRange(txt_1.Document.ContentStart, txt_1.Document.ContentEnd); 

      MemoryStream ms = new MemoryStream(); 
      txc.Save(ms, DataFormats.Xaml); 
      string xamlText = ASCIIEncoding.Default.GetString(ms.ToArray()); 
     // string sa = ASCIIEncoding.Default.GetBytes(ms.ToArray()).ToString(); 

      mm.Body = xamlText; 


      mm.IsBodyHtml = true; 
      SmtpClient smtp = new SmtpClient(); 
      smtp.Host = "smtp.gmail.com"; 
      smtp.EnableSsl = true; 
      NetworkCredential NetworkCred = new NetworkCredential("[email protected]", "xxxxxx"); 
      smtp.UseDefaultCredentials = true; 
      smtp.Credentials = NetworkCred; 
      smtp.Port = 587; 
      smtp.Send(mm); 
      // ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true); 
     } 

回答

1

的問題是,你正在做的二進制數據,並明確地將其轉換爲ASCII文本:

string xamlText = ASCIIEncoding.Default.GetString(ms.ToArray()); 

在這樣做,你改變圖像中的字節的原始值。

您要麼要更改消息正文的BodyEncoding/TransferEncoding並同樣對數據進行編碼(例如,Base64或MIME編碼),要麼從文件流中提取圖像並將它們作爲附件添加到郵件中。這裏有一個很好的電子郵件編碼入門:http://email.about.com/cs/standards/a/mime.htm