C# SMTP邮件正文中的换行符

C# SMTP邮件正文中的换行符,c#,asp.net,css,email,sql-server-2012,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> windows服务从数据库读取电子邮件并使用smpt发送它们

我有一个ASP.NET web应用程序,它有一个向收件人列表发送电子邮件的页面。此页面有一个
asp:TextBox
,其中键入邮件正文:

<asp:TextBox ID="txtBody" runat="server" Height="151px" TextMode="MultiLine" Width="550px" Visible="False" MaxLength="160"></asp:TextBox>
windows服务从数据库读取电子邮件并使用smpt发送它们

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

更新:我调试了windows服务并确定:

mail.Body = "test\r\n\r\ntest";
在数据库中插入两次单词测试,中间有两个换行符。为邮件正文设置的值如下所示:

mail.Body = "test\r\n\r\ntest";

现在我想MailMessage上可能有一个设置来解释正文中的换行符,如上面的注释所示,这种行为最常见的原因是试图将纯文本作为HTML编码的消息发送。回车符/换行符在HTML中没有任何意义,因此不会显示换行符。因此,有两个快速解决方案:

  • 确保您的计算机上的
    IsBodyHtml
    属性设置为false
    MailMessage
    对象,或

  • 元素替换
    \r\n
    的任何实例,然后设置
    IsBodyHtml
    设置为true。这可以通过以下方式实现:

    \u yourEmailContent.Replace(Environment.NewLine,“
    ”).ToString()

另一种方法是将换行符/返回字符编码/转换为:


\u yourEmailContent.Replace(Environment.NewLine,
;
;).ToString()

与猜测您发送的是纯文本邮件还是HTML邮件相比,最好是调试流程并找出换行符丢失的位置?对于后者,像
\r\n
这样的换行符基本上被忽略了。@TiesonT:我两个都试过了。同样的结果。@tisont:不,我错了。我正在发送一封HTML邮件。设置在两个地方,我只看到一个。这就解决了,谢谢