c# - SMTP MailMessage 正文中的换行符

标签 c# asp.net css email sql-server-2012

我有一个 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您的属性设置为 false MailMessage对象,或
  • 替换 \r\n 的所有实例与 <br />元素,然后设置 IsBodyHtml为真。这可以通过 one simple line 来完成:

    _yourEmailContent.Replace(Environment.NewLine, "<br />").ToString();

另一种选择是将换行符/返回字符编码/转换为 entities :

_yourEmailContent.Replace(Environment.NewLine, "&#x000D;&#x000A;").ToString();

关于c# - SMTP MailMessage 正文中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23424461/

相关文章:

javascript - 如何使用 asp.net 禁用 Internet explorer 中的退格键

asp.net - 获取IP地址

html - 删除嵌套表之间的空间

html - 基于 Div 的按钮菜单在不同的浏览器中有不同的行为

c# - 使用 c# 从 Panasonic PBX 捕获数据

c# - 在 XNA 中使用搜索进行音频/视频播放

C#,如何获取网页内容?

Safari 中的 CSS 定位中断

c# - PDFsharp 页面大小和设置边距问题 c#

C# - 需要控制语句的建议