stringbuilder を使用して、テキスト (HTML ではない) メールで使用する文字列の本文を作成しようとしています。ただし、一部の行(動的データが含まれている場合、新しい行は追加されませんが、一部の行では改行が意図したとおりに機能します。
stringbuilder クラスを使用するときに欠けている基本的なものはありますか、それとももっと基本的なプロセスが必要ですか?
以下のコードで:
sbUser.AppendLine("Please find below confirmation of your registration details. If any of these details are incorrect, please email someone@somewhere.com");
sbUser.AppendLine();
sbUser.AppendLine("Selected event : " + ContentPage.FetchByID(int.Parse(ddlEvent.SelectedValue)).PageTitle);
sbUser.AppendLine("Date of event : " + thisEvent.EventStartDate.ToString("dd MMM yyyy"));
sbUser.AppendLine("==============================================================");
sbUser.AppendLine();
(ContentPage と thisEvent は Subsonic(v2) を使用して構築されたカスタム クラスです。PageTitle は文字列の出力タイプです)
これを出力として取得します:
Please find below confirmation of your registration details. If any of these details are incorrect, please email someone@somewhere.com
Selected event : My Event Date of event : 16 Sept 2012 ==============================================================
ご覧のとおり、コードの 3 行目以降はすべて 1 行にまとめられています。
ただし、私が使用するコードをさらに下に:
sbRR.AppendLine("First name : " + txtFirstname.Text.Trim());
sbRR.AppendLine("Surname : " + txtSurname.Text.Trim());
etc,
これらはすべて別々の行に正しく表示されます。なぜこれが起こっているのかわかりません。
メールはそのように構成されています
mailMessage.Body = sbUser.ToString() + sbRR.ToString();
次のコードを追加します。
sbUser.AppendLine("Selected event : " + ContentPage.FetchByID(int.Parse(ddlEvent.SelectedValue)).PageTitle + Environment.NewLine);
sbUser.AppendLine("Date of event : " + thisEvent.EventStartDate.ToString("dd MMM yyyy") + Environment.NewLine);
次の出力が生成されます。
Selected event : My Event
Date of event : 16 Sept 2012
==============================================================
2つの改行(AppendLineとEnvironment.NewLine)が追加されていることを除いて、これはうまくいくと思います。データベースから文字列ビルダーにデータを直接引き込むと、行末が混乱しているようです。データベースのプル後にテキストを追加しても、1 行のままです。
アップデート
実行
StringBuilder.Append("blah"+Environment.NewLine)
すると正しい結果が得られますが、なぜそれが機能し、機能しないのかはまだわかり.AppendLine("blah"+<database content>)
ません。