首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SMTP MailMessage体中的换行

SMTP MailMessage体中的换行
EN

Stack Overflow用户
提问于 2014-05-02 09:03:38
回答 1查看 4.3K关注 0票数 4

我有一个ASP.NET网络应用程序,它有一个页面,可以发送电子邮件给收件人列表。此页面有一个asp:TextBox,其中输入邮件正文:

代码语言:javascript
运行
复制
<asp:TextBox ID="txtBody" runat="server" Height="151px" TextMode="MultiLine" Width="550px" Visible="False" MaxLength="160"></asp:TextBox>

然后,该页面使用REST服务将电子邮件详细信息插入数据库:

代码语言:javascript
运行
复制
EmailBatchHelper.SendBatch(recipients, txtNotificationTo.Text, txtFrom.Text.TrimEnd(), txtBody.Text, txtSubject.Text, strAtt);

windows服务从数据库中读取电子邮件,并使用smpt发送它们。

我遇到的问题是身体中的断线被移除了。我猜是什么时候把它插入数据库的。如何在用户接收的消息中仍然存在任何中断行?

更新:i调试了windows服务并确定如下:

插入到数据库中的是单词test两次,中间有两个行间隔。设置为MailMessage主体的值如下:

代码语言:javascript
运行
复制
mail.Body = "test\r\n\r\ntest";

现在我在想,在MailMessage上可能会有一个设置来解释身体中的分行符

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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, "&#x000D;&#x000A;").ToString();

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23424461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档