我正在尝试使用 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 行之后的所有内容都使所有内容都继续到一行。
但是,在我使用的代码下方:
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)。似乎将数据直接从数据库中提取到 stringbuilder 似乎会弄乱行尾。即使我在数据库拉取后添加文本,它仍然保持在一行。
更新
做
StringBuilder.Append("blah"+Environment.NewLine)
会产生正确的结果,但是我仍然不明白为什么会起作用和.AppendLine("blah"+<database content>)
不起作用。