我正在尝试从我的c#网站发送smtp电子邮件。除了当文本框文本中有换行符,它在电子邮件中没有格式化这些内容时,它会发送正常的内容。相反,它只有一长串文本。
电子邮件是html编码的,所以我该怎么做:
tbDeliver.Text
在电子邮件中保留换行符吗?
提前致谢
答案 0 :(得分:8)
试试这个:
var textBoxText = tbDeliver.Text.Replace(Environment.NewLine, "<br>");
答案 1 :(得分:3)
我使用正则表达式执行此操作以确保我获得任何新行的风格:
Regex matchNewLine = new Regex("\r\n|\r|\n", RegexOptions.Compiled | RegexOptions.Singleline);
string result = matchNewLine.Replace(originalText, "<br />");
答案 2 :(得分:2)
确保邮件的正文格式为Html类型。如果您使用system.web发送邮件:
System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage();
mail.BodyFormat = Web.Mail.MailFormat.Html;
如果您使用的是system.net:
System.Net.Mail.MailMessage mail = New System.Net.Mail.MailMessage();
mail.IsBodyHtml = True;
答案 3 :(得分:0)
您可以将.Text中的\r\n
替换为可能有效的<br/>
,是否在段落<p>
中输出?
答案 4 :(得分:0)
您需要将\n
替换为<br>
中的tbDeliver.Text
。
string formatted = tbDeliver.Text.Replace ("\n", "<br />");
答案 5 :(得分:0)
Html将换行符编码为'&lt; br /&gt;'或'&lt; p&gt;'标签。
答案 6 :(得分:-1)
ACK!
永远不会使用Environment.NewLine替换&lt; BR&gt;电子邮件中的标签。
我不能强调这一点。
在某些平台上,Environment.NewLine将是\ n,这在SMTP世界中是一个巨大的禁忌。
在SMTP中,所有换行符必须为\ r \ n。
最终,某些服务器仅使用\ n。
会将您的邮件拒绝为垃圾邮件始终使用\ r \ n或vbCrLf替换&lt; br&gt;标签强>