我有一个ASP.NET Web应用程序,它有一个页面可以将电子邮件发送到收件人列表。此页面有asp:TextBox
,其中输入邮件正文:
<asp:TextBox ID="txtBody" runat="server" Height="151px" TextMode="MultiLine" Width="550px" Visible="False" MaxLength="160"></asp:TextBox>
然后,该页面使用REST服务将电子邮件详细信息插入数据库:
EmailBatchHelper.SendBatch(recipients, txtNotificationTo.Text, txtFrom.Text.TrimEnd(), txtBody.Text, txtSubject.Text, strAtt);
Windows服务从数据库中读取电子邮件并使用smpt发送它们。
我遇到的问题是身体中的换行符被删除。我猜它什么时候插入数据库。如何在用户收到的消息中仍然存在任何换行符?
更新: 我调试了Windows服务并确定了以下内容:
插入到数据库中的是单词test两次,其间有2个换行符。设置为MailMessage的Body的值如下:
mail.Body = "test\r\n\r\ntest";
现在我想在MailMessage上可能有一个设置来解释Body中的换行符
答案 0 :(得分:3)
如上面的评论所示,此行为的最常见原因是尝试将纯文本作为HTML编码的邮件发送。回车符/换行符在HTML中没有意义,因此换行符不会显示。所以,有两个快速修复:
IsBodyHtml
属性设置为false
MailMessage
个对象或将\r\n
的所有实例替换为<br />
元素,然后设置
IsBodyHtml
为真。这可以通过one simple line:
_yourEmailContent.Replace(Environment.NewLine, "<br />").ToString();
另一种方法是将换行符/返回字符编码/转换为entities:
_yourEmailContent.Replace(Environment.NewLine, "
").ToString();