1

如何将字符串发送到包含新行(回车)的电子邮件?

问题是我将字符串发送到电子邮件,而电子邮件会去掉回车符。

Dim myApp As New Process

    emailStringBuilder.Append("mailto:")

    emailStringBuilder.Append("&subject=" & tmpID & " - " & subject)

    emailStringBuilder.Append("&body= " & msgStringBuilder.ToString)

    myApp = System.Diagnostics.Process.Start(emailStringBuilder.ToString)
4

3 回答 3

1

我猜你在没有换行符的情况下添加到你的 StringBuilder 中,因为我刚刚测试过它,它对我来说很好用。

Imports System.Text
Module Module1
    Sub Main()
        Dim sb As New StringBuilder
        sb.AppendLine("Line 1")
        sb.AppendLine("Line 2")
        sb.Append("Line 3" & vbCrLf)
        sb.Append("Line 4 without CRLF")
        sb.Append("Line 5")
        Console.WriteLine(sb.ToString)
    End Sub
End Module

对于上面的代码,我得到以下输出

Line 1
Line 2
Line 3
Line 4 without CRLFLine 5

希望这可以帮助。

编辑

好的,所以根据新信息(关于电子邮件),上述内容仍然适用。如果您添加到字符串生成器,.Append您将丢失,或者更正确地说,看不到换行符。相反,您必须使用.AppendLine它将所有重要的 CR 和 LF 代码添加到字符串的末尾。

但是,我有点困惑您如何发送电子邮件。我以前在网页上看到过这种方式,但从未在 vb.net 上看到过。以这种方式发送电子邮件几乎肯定会迫使您发送没有换行符的电子邮件!

我可以建议您查看 Microsoft 的以下内容,了解如何使用 System.Web.Mail 命名空间从 Visual Basic 发送电子邮件。这并不难,您可以更好地控制以这种方式发送的电子邮件....

微软示例

于 2010-02-19T17:43:40.940 回答
0

对于任何也在寻找可以发送到电子邮件的东西的人,您想要像@CResults 答案中那样做,但添加"%0A"到每一行。这将通过大多数电子邮件客户端。

于 2014-12-09T21:23:09.310 回答
0

您也可以通过发送带有 HTML 格式正文的电子邮件来实现这一点,如下所示:

当邮件正文为 HTML 格式时,<br>在您的字符串中添加标签。vbCrLf如果正文是 HTML 格式,StringBuilder则不工作。

Dim mail As New MailMessage
mail.IsBodyHtml = True
mail.Body = "First Line<br>"
mail.Body += "Second Line<br>"
mail.Body += "Third Line"

如果不是 HTML 格式,请使用vbCrLfor vbNewLine

Dim mail As New MailMessage
mail.Body = "First Line" & vbCrLf
mail.Body += "Second Line" & vbNewLine
mail.Body += "Third Line"
于 2016-05-12T20:47:44.790 回答