C# 使用richtextbox在wpf中发送邮件
richtextbox获取从具有图像和文本的word文件复制的值。下面的代码只发送文本而不发送图像。我怎样才能让它同时发送这两个呢C# 使用richtextbox在wpf中发送邮件,c#,wpf,C#,Wpf,richtextbox获取从具有图像和文本的word文件复制的值。下面的代码只发送文本而不发送图像。我怎样才能让它同时发送这两个呢 using (MailMessage mm = new MailMessage("xxx@gmail.com","xxxx@gmail.com")) { mm.Subject = "demo"; TextRange txc = new TextRange(txt_1.Document.Cont
using (MailMessage mm = new MailMessage("xxx@gmail.com","xxxx@gmail.com"))
{
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("xxxx@gmail.com", "xxxxxx");
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mm);
// ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true);
}
问题是您正在获取二进制数据并将其显式转换为ASCII文本:
string xamlText = ASCIIEncoding.Default.GetString(ms.ToArray());
这样做,您就改变了图像中字节的原始值
您可能希望更改消息正文的BodyEncoding/TransferEncoding并对数据进行类似的编码(例如Base64或MIME编码),或者从文件流中提取图像并将其作为附件添加到邮件中。这里有一个很好的电子邮件编码入门: