2014-11-03 2 views
1

Я пишу простой текст для отправки по электронной почте тела, используя StringBuilder. строка не добавляется во всех желаемых местах.Невозможно создать пустую строку все время C#

До сих пор я пробовал. Оба не создают нужную строку все время.

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

Пожалуйста, esult, ваше описание кажется мне немного непонятным. – IllidanS4

+1

Я только что обновил сообщение с желаемым результатом. – user1774445

+2

Отправляется ли ваша электронная почта в формате HTML? Если вам нужно добавить теги
. – bhs

ответ

3

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

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

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

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

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

+0

Я уже пробовал .ApendLine() и получил тот же результат, что и выше. – user1774445

+1

Нам нужно будет больше узнать о вашем коде. Я использую StringBuilders все время и никогда не «потерял» новые строки. – AlG

2

Ваш код выглядит так, как будто он должен работать. Итак, вы обязательно получаете «\ r \ n» после слова «Да»?

Если да, я блуждаю, если это проблема с клиентом электронной почты, который вы тестируете, неправильно обработав строки и символы возврата каретки. Кажется очень странным, что он случайным образом работает.

Вместо обычного текста в теле письма, как насчет использования html (message.IsBodyHtml = true)? Так, например, вместо добавления «\ r \ n» добавьте «<br />».

Update: Если ваш почтовый клиент 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

Вы должны отредактировать свой вопрос, а не поставить это как ответ. – AlG

Смежные вопросы