我有一个 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 正文的值如下:
mail.Body = "test\r\n\r\ntest";
现在我想 MailMessage 上可能有一个设置来解释 Body 中的换行符
最佳答案
如上面的评论所示,此行为的最常见原因是尝试将纯文本作为 HTML 编码的消息发送。回车符/换行符在 HTML 中没有意义,因此不会显示换行符。因此,有两个快速修复方法:
- 确保
IsBodyHtml
您的属性设置为 falseMailMessage
对象,或 替换
\r\n
的所有实例与<br />
元素,然后设置IsBodyHtml
为真。这可以通过 one simple line 来完成:_yourEmailContent.Replace(Environment.NewLine, "<br />").ToString();
另一种选择是将换行符/返回字符编码/转换为 entities :
_yourEmailContent.Replace(Environment.NewLine, "
").ToString();
关于c# - SMTP MailMessage 正文中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23424461/