无法始终创建一个空行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)应该是一个,它会创建两条双线(但我不能让它在第三个问题上换行)。我有几个这样的问题,这种情况是随机发生的(没有模式)。

关于如何强制一行的任何建议。

无法始终创建一个空行c#

你做了一个错误的假设;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);
相关文章: