.net StringBuilder.AppendLine()不生成新行
发生错误时,我正在生成电子邮件。我正在使用.net StringBuilder.AppendLine()不生成新行,.net,vb.net,string,email,stringbuilder,.net,Vb.net,String,Email,Stringbuilder,发生错误时,我正在生成电子邮件。我正在使用StringBuilder.AppendLine()和StringBuilder.AppendLine(String)构建电子邮件正文,但是我的电子邮件正文显示为一条很长的线,没有换行符 例如: Dim ErrorsStringBuilder作为新的StringBuilder ErrorsStringBuilder.AppendLine(String.Format(“状态:{0}消息:{1}”,Results.Status,Results.ErrorMe
StringBuilder.AppendLine()
和StringBuilder.AppendLine(String)
构建电子邮件正文,但是我的电子邮件正文显示为一条很长的线,没有换行符
例如:
Dim ErrorsStringBuilder作为新的StringBuilder
ErrorsStringBuilder.AppendLine(String.Format(“状态:{0}消息:{1}”,Results.Status,Results.ErrorMessage))
ErrorsStringBuilder.AppendLine(String.Format(“失败:{0}总计:{1}”,Results.FailedCount,Results.TotalCount))
ErrorsStringBuilder.AppendLine(“批处理:”&Results.BatchNumber)
ErrorsStringBuilder.AppendLine()错误
ErrorsStringBuilder.AppendLine(“单个错误:”)
ErrorsStringBuilder.AppendLine()错误
对于每个失败的记录。。。。。。。
ErrorsStringBuilder.AppendLine(String.Format(“失败的记录ID:{0}消息:{1}”、FailedRecord.ID、FailedRecord.ErrorText))
下一个
这是MSDN中分别针对.AppendLine()
和.AppendLine(字符串)
的描述
将默认行终止符追加到当前行的末尾
StringBuilder对象
追加指定字符串的副本,后跟默认行
终止符到当前StringBuilder对象的末尾
我的问题是:为什么没有换行?为什么不应用默认的行终止符?我是不是误解了描述
顺便说一句,我确实看过,但没有解释为什么
我知道我可以使用
System.Environment.NewLine
或“\n”
来获得换行符。您的电子邮件正文似乎是HTML
类型,但您正在呈现简单文本
-
如果您确实希望它是简单文本
,则在电子邮件对象集中IsBodyHtml=false
它将在不修改StringBuilder代码的情况下呈现新行-
MailMessage mail = new MailMessage();
mail.IsBodyHtml = false;
如果您只需要HTML,请尝试在每行之后添加-
ErrorsStringBuilder.AppendLine("<br />");
要使其工作,您应该将这两条语句包含在两个不同的块元素中-
在这种情况下,我使用的是段落-
<html>
<body>
<p>Hi,</p>
<p>How are you?</p>
</body>
</html>
在您的情况下,您需要找出HTML来呈现所需的输出。否则,请使用
作为解决方法
带有
标记的HTML示例-
Dim ErrorsStringBuilder As New StringBuilder
ErrorsStringBuilder.AppendLine(String.Format("<p>Status : {0} Message : {1}</p>", Results.Status, Results.ErrorMessage))
ErrorsStringBuilder.AppendLine(String.Format("<p>Failed : {0} Total : {1}</p>", Results.FailedCount, Results.TotalCount))
ErrorsStringBuilder.AppendLine("<p>Batch #: </p>" & Results.BatchNumber)
ErrorsStringBuilder.AppendLine()
ErrorsStringBuilder.AppendLine("<p>Individual Errors:</p>")
ErrorsStringBuilder.AppendLine()
For Each FailedRecord .......
ErrorsStringBuilder.AppendLine(String.Format("<p>Failed Record ID : {0} Message : {1}</p>", FailedRecord.ID, FailedRecord.ErrorText))
Next
Dim ErrorsStringBuilder作为新的StringBuilder
ErrorsStringBuilder.AppendLine(String.Format(“状态:{0}消息:{1}”,Results.Status,Results.ErrorMessage))
ErrorsStringBuilder.AppendLine(String.Format(“失败:{0}总计:{1}”,Results.FailedCount,Results.TotalCount))
ErrorsStringBuilder.AppendLine(“批处理#:”&Results.BatchNumber)
ErrorsStringBuilder.AppendLine()错误
ErrorsStringBuilder.AppendLine(个别错误:)
ErrorsStringBuilder.AppendLine()错误
对于每个失败的记录。。。。。。。
ErrorsStringBuilder.AppendLine(String.Format(“失败记录ID:{0}消息:{1}”,FailedRecord.ID,FailedRecord.ErrorText))
下一个
由于它显示为一条长线,您的电子邮件很可能设置为显示为HTML,而不是纯文本。在HTML中,换行符必须使用
您可以尝试在代码末尾添加HTML换行符。如果您想在电子邮件正文中使用HTML格式,将ErrorsStringBuilder输出包装在
…
标记中,以保留空格和换行符,并使用固定宽度字体来保持格式。setmail.IsBodyHtml=false代码>在你的vb.net代码中它对你有用吗?
<html>
<body>
<p>Hi,</p>
<p>How are you?</p>
</body>
</html>
Hi,
How are you?
Dim ErrorsStringBuilder As New StringBuilder
ErrorsStringBuilder.AppendLine(String.Format("<p>Status : {0} Message : {1}</p>", Results.Status, Results.ErrorMessage))
ErrorsStringBuilder.AppendLine(String.Format("<p>Failed : {0} Total : {1}</p>", Results.FailedCount, Results.TotalCount))
ErrorsStringBuilder.AppendLine("<p>Batch #: </p>" & Results.BatchNumber)
ErrorsStringBuilder.AppendLine()
ErrorsStringBuilder.AppendLine("<p>Individual Errors:</p>")
ErrorsStringBuilder.AppendLine()
For Each FailedRecord .......
ErrorsStringBuilder.AppendLine(String.Format("<p>Failed Record ID : {0} Message : {1}</p>", FailedRecord.ID, FailedRecord.ErrorText))
Next