我正在尝试使用StringBuilder创建一个纯文本邮件正文,但是某些行(包含动态数据的行)没有添加换行符,而在某些行上换行符按预期工作。
我是否在使用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 ==============================================================
你可以看到,代码中第三行后的所有内容都在一行上。
然而,在代码的下方我使用了:
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
==============================================================
这个方法似乎是有效的,但它添加了两个新行(AppendLine和Environment.NewLine)。直接从数据库中将数据提取到StringBuilder中似乎会对行结尾产生影响。即使我在数据库提取后添加文本,它仍然保持在一行上。
更新
使用以下代码:StringBuilder.Append("blah"+Environment.NewLine)
可以产生正确的结果,不过我仍然不明白为什么 .AppendLine("blah"+<database content>)
不起作用。
StringBuilder sb = new StringBuilder(1024);
- Steve