Car*_*rel 3 css c# asp.net 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>
Run Code Online (Sandbox Code Playgroud)
然后该页面使用 REST 服务将电子邮件详细信息插入数据库:
EmailBatchHelper.SendBatch(recipients, txtNotificationTo.Text, txtFrom.Text.TrimEnd(), txtBody.Text, txtSubject.Text, strAtt);
Run Code Online (Sandbox Code Playgroud)
Windows 服务从数据库中读取电子邮件并使用 smpt 发送它们。
我遇到的问题是身体中的换行符沿线的某处被删除。我猜它什么时候被插入到数据库中。如何在用户收到的消息中仍然存在任何换行符?
更新:我调试了 Windows 服务并确定以下内容:
插入到数据库中的是单词 test 两次,中间有 2 个换行符。设置为 MailMessage 正文的值如下:
mail.Body = "test\r\n\r\ntest";
Run Code Online (Sandbox Code Playgroud)
现在我在想 MailMessage 上可能有一个设置来解释正文中的换行符
如上面的评论所示,这种行为的最常见原因是尝试将纯文本作为 HTML 编码的消息发送。回车符/换行符在 HTML 中没有意义,因此不会显示换行符。所以,有两个快速修复:
IsBodyHtml属性在您的MailMessage对象上设置为 false
,或者\r\n用<br />元素替换任何实例,然后设置
IsBodyHtml为 true。这可以通过一行简单的代码来完成:
_yourEmailContent.Replace(Environment.NewLine, "<br />").ToString();
另一种选择是将换行符/返回字符编码/转换为实体:
_yourEmailContent.Replace(Environment.NewLine, "
").ToString();
| 归档时间: |
|
| 查看次数: |
3424 次 |
| 最近记录: |