2014-11-03 22 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(環境。 NewLine)應該是一個,它會創建兩個雙線(但我不能讓它在第三個問題上斷線)。我有幾個這些問題,這是隨機發生的(無模式)。

有關如何強制一條線的任何建議。

+0

請顯示想要的結果,你的描述對我來說似乎有點不清楚。 – IllidanS4 2014-11-03 17:54:26

+1

我剛剛更新了所需結果的帖子。 – user1774445 2014-11-03 19:09:35

+2

您的電子郵件是以HTML格式發送的嗎?如果是這樣,你需要添加
標籤。 – bhs 2014-11-03 20:00:21

回答

3

你做出了一個錯誤的假設; StringBuilder.Append不附加新行。你想要.AppendLine()。您所擁有的正是預期的每個.Append都添加了文本,但沒有行終止符。你已經加了3,所以你得到3行。基於有機磷農藥

更新評論

基於你的代碼和方法,這應該是罰款:

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

格式你需要的字符串,以及整條生產線追加到StringBuilder。你需要爲你想要的每條線做這個。

+0

我已經試過.ApendLine(),並得到了與上面顯示的結果相同的結果。 – user1774445 2014-11-03 19:46:55

+1

我們需要查看更多的代碼。我一直使用StringBuilders,並且從來沒有「失去」換行符。 – AlG 2014-11-03 19:55:41

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

你應該編輯你的問題,而不是把它作爲答案。 – AlG 2014-11-05 14:51:16