我正在通过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;
}
}
答案 0 :(得分:0)
如果您不需要使用HTML格式,则可以避免将电子邮件格式更改为纯文本的问题。这也可以避免用户输入可以解析为html的文本。
mm.IsBodyHtml = false;
否则,您应该将结束符更改为html换行符:
mm.IsBodyHtml = true;
mm.Body = mm.Body.Replace(@"\n", "<br />");
对于html格式选项,明智的做法是遵循Fildor的注释,并为不支持HTML的电子邮件客户端添加纯文本alternateView
。