smtp消息体内的System.Environment.NewLine不会有任何影响

时间:2015-08-21 15:02:44

标签: c# asp.net asp.net-mvc asp.net-mvc-5

我在asp.net mvc web应用程序中有以下内容,其中有一个名为scan.Description的字符串,用于存储有关操作执行的详细信息: -

foreach(var c in Assets){
//code goes here
     scan.Description = scan.Description + c.ScanResult + " \"" + System.Environment.NewLine;
//code goes here
}

然后在这个动作方法结束时,我将通过电子邮件发送最终的scan.Description字符串,如下所示: -

using (MailMessage mail = new MailMessage(from, "*****"))
            {
                mail.Subject = "scan report generated";


                mail.IsBodyHtml = true;
            System.Text.StringBuilder mailBody = new System.Text.StringBuilder();
            mailBody.AppendLine("<span style='font-family:Segoe UI'><b>Hi </b><b></b> <br/><br/>");
            mailBody.AppendLine(scan.Description );
            mailBody.AppendLine("<br/><br/><div style='color:#f99406;font-weight:bold'>scanning Management </div> <br/> <div style='color:#f99406;font-weight:bold'>Best Regards</div></span>");

            SmtpClient smtp = new SmtpClient();
            smtp.Host = System.Web.Configuration.WebConfigurationManager.AppSettings["smtpIP"];
            smtp.EnableSsl = true;
            mail.Body = mailBody.ToString();
            //    NetworkCredential networkCredential = new NetworkCredential(from, "BetherealwayS$1");
            smtp.UseDefaultCredentials = false;
            //   smtp.Credentials = networkCredential;
            smtp.Port = Int32.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["smtpPort"]);


            smtp.Send(mail);
        }

但我遇到的问题是电子邮件正文中没有System.Environment.NewLine而且会是一个段落吗?

1 个答案:

答案 0 :(得分:2)

Environment.NewLine并不代表&#34;现在它将神奇地作为一个新的线路在任何地方工作&#34;。它仅表示特定OS /托管环境的换行序列。

在您的情况下,由于您要发送HTML邮件,因此您需要使用HTML作为换行符,即<p>...</p><br />,具体取决于您使用的新行的确切类型#39;谈论。

期望Environment.NewLine能够适应这种情况,就像期待它可以用于例如HTTP标头(正确的总是 CRLF,无论环境如何),或者是自定义二进制格式。