逐行发送电子邮件

时间:2018-02-06 14:26:27

标签: vb.net

我使用电子邮件发送电子邮件。在body子句中,我使用下面的代码。在bodyText变量中,我插入来自stringbuilder的文本。但是在收到我的电子邮件的最后,所有文本都不是第b行,而是在一行中。我做错了什么?

Mail.Body = "<HTML><HEAD></head><BODY style='font-size: 11px; font-family: Tahoma'>" + "<P>" & "Hi there," & ",</p>" + "<p>" & bodyText & "</p>" & "<p>This e-mail is generated automatically therefore <b>do not reply to this email.</b></p>" + "<p>Developer, </p>" & "Development team" & "</BODY></HTML>"

的StringBuilder:

_strbuild.Append("Start" + Environment.NewLine).AppendLine()

_strbuild.Append("Start" + Environment.NewLine).AppendLine()

3 个答案:

答案 0 :(得分:0)

您创建了一些HTML,因此您必须使用HTML新行(<br>):

_strbuild.Append("Start" + "<br>")
_strbuild.Append("Start" + "<br>")

您必须使用\r\n元素,而不是使用系统新行(\n<br>)。在HTML中,您只能使用系统新行来格式化HTML代码,而不是格式化输出。

答案 1 :(得分:0)

当消息正文以HTML格式发送时,在String中添加
(break-br)标记。如果正文是HTML格式,则不建议使用vbCrLf和StringBuilder,因为它们不起作用。

||

答案 2 :(得分:0)

Environment.NewLine不起作用,因为您的程序的当前环境与用户读取结果的环境不同。您的环境是一个控制台程序(伪装成计划任务或服务),或Web服务器应用程序,或Windows窗体,或其他输出简单\n字符导致新行的其他内容。这同样适用于AppendLine()。它在幕后使用Environment.NewLine,问题是您的程序环境与用户的环境不同。

在这种情况下,您的用户环境是一个HTML文档。 HTML将所有简单的空白视为一个空格。无论您是否有制表符,换行符,空格或上述的倍数或组合,都是如此。它全部整合到html中的单个空间。

因此对于html,为了强制换行,您应该在html中添加<br>标记。更重要的是,HTML将自动分解行;没有做任何事情,你可能会离开。即使在你想要一个明确的换行符的情况下,从语义角度来看,你通常真正要做的就是要求一个新的段落。这意味着<p>通常更合适:

_strbuild.Append("Start").Append("<p>")

如果您真的不想要新段落中的额外空白行,您可以使用样式删除或减少它(尽管可以肯定的是,电子邮件是打破正确的p vs br语义的地方可能是合适的:电子邮件渲染器可能很难。)