无法获得单一的新行\ n

时间:2013-07-24 13:30:52

标签: c# string email-integration

我正在尝试通过在创建时传入字符串来在电子邮件正文中创建2个项目列表。其中一个列表完美没有问题(I.E.每个条目都在新行上,正如预期的那样),但我无法弄清楚如何以相同的方式格式化其他列表。它不是新行,也不是双行间距。我已经尝试过System.environment.newline,“\ r \ 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.email@email.com");
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”。

4 个答案:

答案 0 :(得分:2)

而不是

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

使用更短的

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

当然,您也可以使用过期的密码。

如果由于某种原因它无法解决您的问题,只需在电子邮件正文中使用Html,然后使用<br />标记分开。

答案 1 :(得分:1)

我会启用HTML正文,然后使用<br />代替。由于某种原因,电子邮件服务通常都是粗略的。但是我使用Environment.Newline();

时从未遇到过任何问题
 emailAdmin.IsBodyHtml = true;

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

这种方式只需使用html启用换行符。

此外,您可能想要添加两个而不是一个,但这仅取决于个人对您的偏好。

对于OP回答他自己的问题的方式,你可以这样做:

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

答案 2 :(得分:1)

对于您使用的Unix平台上的新行:"\r\n"以及您使用"\n"的Unix平台上的新行,但您可以使用Environment.NewLine并由它来决定。

答案 3 :(得分:0)

我明白了。感谢Microbloft,Outlook会自动删除它认为过多的新行命令。我通过在换行符之前添加一个句点来修复它,所以:

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