Невозможно создать пустую строку все время c #

1

Я пишу простой текст для отправки по электронной почте тела с помощью 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

Если я добавлю два builder.Append(Environment.NewLine), как предполагалось, он создаст две двойные строки (но я не могу заставить его сломать линию по третьему вопросу). У меня есть несколько из этих вопросов, и это происходит случайным образом (без шаблона).

Любое предложение о том, как заставить одну строку.

  • 0
    Пожалуйста, покажите желаемый результат, ваше описание кажется мне немного неясным.
  • 1
    Я только что обновил пост с желаемым результатом.
Показать ещё 2 комментария
Теги:

3 ответа

3

Вы сделали плохое предположение; StringBuilder.Append не добавляет новую строку. Вы хотите .AppendLine(). То, что у вас есть, - это то, что ожидается каждый .Append добавляет текст, но не ограничивает строку. Вы добавили 3, так что вы получите 3 строки.

Обновление на основе комментариев OPs

На основе вашего кода и методов это должно быть хорошо:

builder.AppendLine(String.Format("Full Houlse?: {0}", CommonUtilities.GetYESNOfromBOOL(bo.FullHoulse)));

Отформатируйте нужную строку и добавьте полную строку в StringBuilder. Вам нужно будет сделать это для каждой строки, в которой вы хотите.

  • 0
    Я уже пробовал .ApendLine () и получил тот же результат, как показано выше.
  • 1
    Нам нужно увидеть больше вашего кода. Я использую StringBuilders все время и никогда не "терял" переводы строки.
2

Ваш код выглядит так, как будто он должен работать. Итак, вы обязательно получаете "\ 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

0

Вот метод, который записывает строку в тело сообщения электронной почты

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("[email protected]"));
            (new SmtpClient()).Send(message);
  • 0
    Вы должны отредактировать свой вопрос, а не ставить его как ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню