2015-05-29 3 views
0

Richtextbox получает значение, скопированное из текстового файла с изображением и текстом. В приведенном ниже коде отправляется текст, а не изображение. Как я могу получить его для отправки обоих?Отправка почты в wpf с использованием richtextbox

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 сообщения Body и закодировать данные аналогично (например, Base64 или MIME-кодирование), либо извлечь изображения из потока файлов и добавить их в почту в виде вложений , Здесь есть хороший праймер для кодирования электронной почты: http://email.about.com/cs/standards/a/mime.htm

Смежные вопросы