C# 使用richtextbox在wpf中发送邮件

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

richtextbox获取从具有图像和文本的word文件复制的值。下面的代码只发送文本而不发送图像。我怎样才能让它同时发送这两个呢

   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编码),或者从文件流中提取图像并将其作为附件添加到邮件中。这里有一个很好的电子邮件编码入门: