2

エラーが発生したときにメールを生成しています。と を使用StringBuilder.AppendLine()StringBuilder.AppendLine(String)て電子メールの本文を作成していますが、電子メールの本文が改行のない非常に長い 1 行として表示されます。

例えば:

Dim ErrorsStringBuilder As New StringBuilder
ErrorsStringBuilder.AppendLine(String.Format("Status : {0}  Message : {1}", Results.Status, Results.ErrorMessage))
ErrorsStringBuilder.AppendLine(String.Format("Failed : {0}  Total : {1}", Results.FailedCount, Results.TotalCount))
ErrorsStringBuilder.AppendLine("Batch #: " & Results.BatchNumber)
ErrorsStringBuilder.AppendLine()
ErrorsStringBuilder.AppendLine("Individual Errors:")
ErrorsStringBuilder.AppendLine()
For Each FailedRecord .......
  ErrorsStringBuilder.AppendLine(String.Format("Failed Record ID : {0}  Message : {1}", FailedRecord.ID, FailedRecord.ErrorText))
Next

これは MSDN からの.AppendLine()および.AppendLine(String)それぞれの説明です。

現在の StringBuilder オブジェクトの末尾にデフォルトの行終端記号を追加します。

現在の StringBuilder オブジェクトの末尾に、指定された文字列のコピーとそれに続くデフォルトの行終端記号を追加します。

私の質問は、なぜ改行がないのですか? デフォルトの改行記号が適用されないのはなぜですか? 説明を誤解していますか?

ps。この質問を見ましたが、理由の説明はありません。

改行を使用System.Environment.NewLineまたは取得できることを知っています。"\n"

4

3 に答える 3

5

あなたのメール本文はタイプのHTMLようですが、レンダリングしていますsimple text-

本当にそれが必要な場合simple textは、メールオブジェクトセットIsBodyHtml = falseで StringBuilder コードを変更せずに新しい行をレンダリングします-

MailMessage mail = new MailMessage();
mail.IsBodyHtml = false;

HTML のみが必要な場合は、すべての行の後に追加してみてください -

ErrorsStringBuilder.AppendLine("<br />");

実際、HTML 出力を作成しようとしています。

HTMLで書く場合 -

<html>
<body>
Hi,

How are you?
</body>
</html>

それは結果として-

Hi, How are you? 

これを機能させるには、これら 2 つのステートメントを 2 つの異なるブロック要素で囲む必要があります。

この場合、私は段落を使用しています -

<html>
<body>
<p>Hi,</p>

<p>How are you?</p>
</body>
</html>

これにより、次のようになります-

Hi,

How are you?

あなたの場合、必要な出力をレンダリングするために HTML を理解する必要があります。それ以外の場合は、回避策として使用<br />してください。

<p>タグ付き 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
于 2013-05-02T09:12:59.847 に答える
0

1 つの長い行として表示されるため、電子メール メッセージはプレーン テキストではなく HTML として表示されるように設定されている可能性があります。HTML では<br/>、改行に使用する必要があります。

ErrorsStringBuilder.Replace(Environment.NewLine, Environment.NewLine + "<br/>")コードの最後に HTML 改行を追加してみてください。

于 2013-05-02T09:13:45.763 に答える