无法始终创建一个空行c#
本文关键字:一个 创建 | 更新日期: 2023-09-27 18:29:08
我正在使用StringBuilder
向电子邮件正文写入纯文本。该行并没有被添加到所有想要的位置。
到目前为止,我已经尝试过了。两者都不会一直创建所需的行。
builder.Append("'r'n");
builder.Append(Environment.NewLine);
这是我的部分代码:
builder.Append("question 1: ");
builder.Append(CommonUtilities.GetYESNOfromBOOL(bo.GetAnswer1));
builder.Append(Environment.NewLine);
builder.Append("question 2: ");
builder.Append(CommonUtilities.GetYESNOfromBOOL(bo.GetAnswer2));
builder.Append(Environment.NewLine);
builder.Append("question 3: ");
builder.Append(CommonUtilities.GetYESNOfromBOOL(bo.GetAnswer3));
builder.Append(Environment.NewLine);
结果:
question 1: No
question 2: Yes question 3: No
期望结果:
question 1: No
question 2: Yes
question 3: No
如果我加上两个建设者。Append(Environment.NewLine)应该是一个,它会创建两条双线(但我不能让它在第三个问题上换行)。我有几个这样的问题,这种情况是随机发生的(没有模式)。
关于如何强制一行的任何建议。
你做了一个错误的假设;StringBuilder.Append
不追加新行。您需要.AppendLine()
。您所拥有的正是每次.Append
添加文本时所期望的内容,但没有行终止符。你加了3行,所以你得到了3行。
根据作战人员意见更新
根据您的代码和方法,这应该很好:
builder.AppendLine(String.Format("Full Houlse?: {0}", CommonUtilities.GetYESNOfromBOOL(bo.FullHoulse)));
设置所需字符串的格式,并将整行附加到StringBuilder
。你需要对你想要的每一行都这样做。
您的代码看起来应该可以工作。所以你肯定在"是"字后面加了一个"''r''n"?
如果是,我想知道您正在测试的电子邮件客户端是否存在问题,因为它没有正确处理换行符和回车符。它随机工作似乎很奇怪。
与其在电子邮件正文中使用纯文本,不如使用html(message.IsBodyHtml = true
)?因此,例如,与其追加"''r''n",不如追加"<br />
"。
更新:如果您的电子邮件客户端是Outlook,则此链接可能与您相关:http://www.emailsignature.eu/phpBB2/outlook-is-stripping-line-breaks-from-plain-text-emails-t1775.html
以下是将字符串写入电子邮件正文的方法
private static string GetEmailBody(PDI bo)
{
StringBuilder builder = new StringBuilder();
builder.Append("Full Houlse?: ");
builder.Append(CommonUtilities.GetYESNOfromBOOL(bo.FullHoulse));
builder.AppendLine();
builder.Append("Any on call?: ");
builder.Append(CommonUtilities.GetYESNOfromBOOL(bo.Anyoncall));
builder.AppendLine();
builder.Append("Phone Number?: ");
builder.Append(CommonUtilities.GetYESNOfromBOOL(bo.PhoneNumber));
builder.AppendLine();
builder.Append("Email Address?: ");
builder.Append(CommonUtilities.GetYESNOfromBOOL(bo.EmailAddress));
builder.AppendLine();
return builder.ToString();
}
这是发送电子邮件的部分:
DistributionListData data = new DistributionListData();
data.LoadData(-1);
MailMessage message = new MailMessage();
message.Subject = "Subject";
message.Body = GetEmailBody(variable) + "'n";
message.To.Add(new MailAddress("Name@domain.com"));
(new SmtpClient()).Send(message);