Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Visual Basic-将回车发送到电子邮件_Vb.net_Newline_Tostring_Stringbuilder_Carriage Return - Fatal编程技术网

Vb.net Visual Basic-将回车发送到电子邮件

Vb.net Visual Basic-将回车发送到电子邮件,vb.net,newline,tostring,stringbuilder,carriage-return,Vb.net,Newline,Tostring,Stringbuilder,Carriage Return,如何向包含新行(回车)的电子邮件发送字符串 问题是,我正在将字符串发送到一封电子邮件,而该电子邮件删除了回车符 Dim myApp As New Process emailStringBuilder.Append("mailto:") emailStringBuilder.Append("&subject=" & tmpID & " - " & subject) emailStringBuilder.Append("&body

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

问题是,我正在将字符串发送到一封电子邮件,而该电子邮件删除了回车符

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)

我猜您正在添加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
对于上面的代码,我得到以下输出

希望这有帮助

编辑

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

然而,我有点困惑你是如何发送电子邮件的。我以前在一个网页上见过这种方式,但从vb.net中从未见过。以这种方式发送电子邮件几乎肯定会迫使您发送不带换行符的电子邮件

关于如何使用System.Web.Mail命名空间从Visual Basic发送电子邮件,我建议您查看Microsoft提供的以下内容。这并不难,通过这种方式发送的电子邮件,你将获得更多的控制权


我猜您在添加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
对于上面的代码,我得到以下输出

希望这有帮助

编辑

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

然而,我有点困惑你是如何发送电子邮件的。我以前在一个网页上见过这种方式,但从vb.net中从未见过。以这种方式发送电子邮件几乎肯定会迫使您发送不带换行符的电子邮件

关于如何使用System.Web.Mail命名空间从Visual Basic发送电子邮件,我建议您查看Microsoft提供的以下内容。这并不难,通过这种方式发送的电子邮件,你将获得更多的控制权


对于那些通过电子邮件寻找有用信息的人,您可以按照@CResults answer中的操作,但在每行添加
%0A“
。这将使大多数电子邮件客户端都能通过。

对于那些也希望通过电子邮件找到有用信息的人,您希望按照@CResults answer中的方法进行操作,但要在每一行中添加
%0A“
。这将使大多数电子邮件客户端都能通过。

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

当邮件正文为HTML格式时,请在字符串中添加

标记<如果正文为HTML格式,则代码>vbCrLf和
StringBuilder
不起作用

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

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

当邮件正文为HTML格式时,请在字符串中添加

标记<如果正文为HTML格式,则代码>vbCrLf和
StringBuilder
不起作用

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

你能提供一些代码来说明这个问题吗?您首先是如何向StringBuilder添加新行的?能否提供一些代码来演示此问题?您首先是如何向StringBuilder添加新行的?我添加了更多信息。我错了,tostring没有被新的线路剥离。当字符串被发送到电子邮件时,新行被删除。我添加了更多信息。我错了,tostring没有被新的线路剥离。当字符串发送到电子邮件时,新行将被删除。