2013-07-24 45 views
2

我試圖通過在創建時傳入字符串來在郵件正文中創建2個項目列表。其中一個列表完美無缺地工作(I.E.每個條目都在一個新行上,就像預期的那樣),但我無法弄清楚如何以相同的方式獲得另一個列表的格式。它要麼沒有新的線條,要麼雙線間距。我試過System.environment.newline,「\ r \ n」,「\ n」,「\ n」等等。當我在代碼中設置斷點時,字符串在適當位置有'\ n'地點,但是在創建電子郵件時沒有顯示。有小費嗎?無法獲取單個新行 n

string users = ""; 
for (int i = 0; i < disabledUsers.Count; i++) 
{ 
    users += disabledUsers[i] + "\n"; //This does not show up as a new line for each item in an email 
} 

// initializing users with expired passwords to a string format 
string expiredUserPasswords = ""; 
for (int i = 0; i < expiredPassword.Count; i++) 
{ 
    expiredUserPasswords += expiredPassword[i] + "\n"; //this works perfectly 
} 

// creating admin message 
MailMessage emailAdmin = new MailMessage(); 
emailAdmin.From = new MailAddress("[email protected]"); 
emailAdmin.Body = "Automated system message:\n\nThe following " + numExpiredPasswords + " accounts have expired passwords and have been disabled:\n\n" + expiredUserPasswords + "\n\nThe following " + numDisabledAccounts + " accounts have been disabled for 90+ days:\n\n" + users + "\n\nThere are " + activeNum + " active users, " + numDisabled + " disabled users, and " + totalNum + " total users.\n\nThis is an automatically generated email. Please do not reply."; 
emailAdmin.Subject = "Dataroom cleanup log"; 

我無法看到這兩個列表之間的區別,爲什麼一個工作正常,而另一個不會。任何幫助,將不勝感激!

編輯 - 我想通了。感謝Microbloft,Outlook自動刪除它認爲過多的新行命令。我通過在換行符之前添加句點來修復它,所以「。\ n」。

+0

你有沒有嘗試的StringBuilder?編輯 – butterbox

+0

@butterbox這不會解決他目前的問題。 – Tyler

+1

@kcducttaper:請將您的解決方案發布爲不作爲編輯,但作爲答案,然後接受答案(只要您被允許),以便問題將顯示爲已解決。 – stakx

回答

0

我想通了。感謝Microbloft,Outlook自動刪除它認爲過多的新行命令。我固定它由換行符前右只是增加一個週期,因此:

users += disabledUsers[i] + ".\n"; 
1

我會啓用HTML正文,然後使用<br />來代替。出於某種原因,電子郵件服務通常都是粗略的。然而,我從來沒有使用Environment.Newline();

emailAdmin.IsBodyHtml = true; 

for (int i = 0; i < disabledUsers.Count; i++) 
{ 
     users += disabledUsers[i] + "<br />"; //This now works 
} 

這種方式只是使用html來啓用換行符。

此外,您可能想要添加兩個而不是一個,但這僅取決於您的個人偏好。對Unix平臺上使用了新的生產線

for (int i = 0; i < disabledUsers.Count; i++) 
{ 
     users += disabledUsers[i] + ".\n"; //This now works 
} 
1

OR

對於OP已經回答了自己的問題的方式,你可以做到這一點,而不是"\r\n"在Unix您使用的平臺"\n",但您可以使用Environment.NewLine,它會爲您決定。

+0

OP已經嘗試使用這些規定。 –

2

而不是

for (int i = 0; i < disabledUsers.Count; i++) 
{ 
    users += disabledUsers[i] + "\n"; 
} 

使用更短的

var users = string.Join("\n", disabledUsers); 

你可以做的密碼已經過期的一樣,當然。

如果由於某種原因它不能解決您的問題,只需在您的電子郵件正文中使用Html,然後使用<br />標籤分開。