SMTP MailMessage正文中的换行符
本文关键字:换行符 正文 MailMessage SMTP | 更新日期: 2023-09-27 18:01:22
我有一个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发送它们。
我遇到的问题是正文中的换行符沿着一行的某个地方被删除。我猜是当它被插入数据库时。我怎样才能让用户收到的消息中仍然存在换行符?
Update:我调试了windows服务,确定了以下内容:
插入到数据库中的是单词test两次,中间有两个换行符。设置为MailMessage正文的值如下:
mail.Body = "test'r'n'r'ntest";
现在我认为MailMessage上可能有一个设置来解释Body
如上面的注释所示,这种行为最常见的原因是试图将纯文本作为html编码的消息发送。回车符/换行符在HTML中没有意义,因此不显示换行符。因此,有两种快速修复方法:
- 确保您的
IsBodyHtml
属性设置为falseMailMessage
对象,或 用
<br />
元素替换'r'n
的任何实例,然后设置IsBodyHtml
为true。这可以用一行来完成:_yourEmailContent.Replace(Environment.NewLine, "<br />").ToString();
另一种方法是将换行符/返回符编码/转换为实体:
_yourEmailContent.Replace(Environment.NewLine, "
").ToString();