System.Environment.Newline间歇性地无法正常工作

时间:2014-03-12 14:57:49

标签: c# asp.net email

我有一些代码可以发送电子邮件。

代码通常如下:

Stringbuilder sb = new StringBuilder();
sb.Append("Field1:" + Field1.Text);
sb.Append(System.Environment.NewLine);
.
.
.

构建字符串,然后转换为字符串并传递给发送电子邮件的函数。

这适用于表单中大多数字段。但是,有几个字段从不获得换行符。同样的代码表现不同,真的很奇怪。

我已经阅读过有很多方法可以在stringBuilder中添加换行符,我也尝试过

sb.AppendLine()

但那也不起作用。

建议?

2 个答案:

答案 0 :(得分:1)

各种邮件客户端会尝试使用电子邮件来尝试让它们看起来更像他们认为您希望它们。

一个常见的例子是,在一定数量的字符和邮件客户端可能会尝试检测到并消除那些人为的换行符后,有时在发送过程中人为地将纯文本电子邮件断行。大多数情况下,它会通过认为单个换行符是"假的"并且双行中断代表一个新段落并且应该保留。

解决此问题的最佳方法是以HTML格式发送邮件。邮件客户端可能有设置来关闭这种不受欢迎的行为,但据我所知,没有办法在邮件本身中禁用它。

答案 1 :(得分:0)

使用HTML换行标记。确保将电子邮件设置为允许HTML。

Stringbuilder sb = new StringBuilder();
sb.Append("Field1:" + Field1.Text);
sb.AppendLine("<br />"); //use AppendLine so that source looks pretty. Use HTML break so that the rendered text has a new line


public static void SendMail(MailMessage mail)
    {
    mail.IsBodyHtml=true;
    //send the email
    }