电子邮件正文成一行

时间:2018-09-04 09:25:47

标签: c#

我正在通过C#发送电子邮件。邮件的正文是动态的,即用户在发送邮件之前先进行填写。问题是正文文本出现在单行中,而不是原应的多行中。

using (MailMessage mm = new MailMessage(txtEmail.Text.Trim(), email.Trim()))
{
    try
    {
        mm.CC.Add(txtcc.Text.Trim());
        mm.Subject = txtSubject.Text.Trim();

        mm.Body = txtBody.Text;
        MemoryStream pdf = new MemoryStream(bytes);
        mm.Attachments.Add(new Attachment(pdf, "Report.pdf"));
        mm.IsBodyHtml = true;              
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.EnableSsl = true;
        NetworkCredential credentials = new NetworkCredential();
        credentials.UserName = txtEmail.Text.Trim();
        credentials.Password = txtPassword.Text.Trim();
        smtp.UseDefaultCredentials = true;
        smtp.Credentials = credentials;
        smtp.Port = 587;
        smtp.Send(mm);
    }
    catch (Exception ex)
    {
        Alert.show1("Could not send the e-mail - error: " + ex.Message, this);
        return;
    }
}

1 个答案:

答案 0 :(得分:0)

如果您不需要使用HTML格式,则可以避免将电子邮件格式更改为纯文本的问题。这也可以避免用户输入可以解析为html的文本。

mm.IsBodyHtml = false; 

否则,您应该将结束符更改为html换行符:

mm.IsBodyHtml = true;
mm.Body = mm.Body.Replace(@"\n", "<br />");

对于html格式选项,明智的做法是遵循Fildor的注释,并为不支持HTML的电子邮件客户端添加纯文本alternateView