我有一个ASP.NET网络应用程序,它有一个页面,可以发送电子邮件给收件人列表。此页面有一个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发送它们。
我遇到的问题是身体中的断线被移除了。我猜是什么时候把它插入数据库的。如何在用户接收的消息中仍然存在任何中断行?
更新:i调试了windows服务并确定如下:
插入到数据库中的是单词test两次,中间有两个行间隔。设置为MailMessage主体的值如下:
mail.Body = "test\r\n\r\ntest";
现在我在想,在MailMessage上可能会有一个设置来解释身体中的分行符
发布于 2014-05-02 10:06:53
如上面的注释所示,这种行为最常见的原因是试图将纯文本作为HTML编码的消息发送。回车/换行符在HTML中没有任何意义,因此不显示换行符。因此,有两个快速解决方案:
IsBodyHtml
属性在MailMessage
对象上设置为false,或\r\n
的任何实例替换为<br />
元素,然后将IsBodyHtml
设置为true。这可以用一条简单行_yourEmailContent.Replace(Environment.NewLine, "<br />").ToString();
来完成。另一种选择是将换行符/返回字符编码/转换为实体
_yourEmailContent.Replace(Environment.NewLine, "
").ToString();
https://stackoverflow.com/questions/23424461
复制相似问题