我正在尝试通过在创建时传入字符串来在电子邮件正文中创建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”。
答案 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";