2

我正在尝试通过在创建时传入一个字符串来在电子邮件正文中创建 2 个项目列表。其中一个列表可以完美运行,没有任何问题(IE 每个条目都在一个新行上,正如预期的那样),但我无法弄清楚如何以相同的方式格式化另一个列表。要么没有新行,要么双行距。我已经尝试过 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

4 回答 4

2

代替

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

使用更短的

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

当然,您可以对过期的密码执行相同的操作。

如果由于某种原因它不能解决您的问题,只需在电子邮件正文中使用 Html 并用<br />标签分隔。

于 2013-07-24T13:43:51.693 回答
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
 }
于 2013-07-24T13:35:45.817 回答
1

对于您使用的 on-Unix 平台上的新行:"\r\n"和在您使用的 Unix 平台上"\n",但您可以使用Environment.NewLine,它会为您决定。

于 2013-07-24T13:38:22.463 回答
0

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

    users += disabledUsers[i] + ".\n"; 
于 2013-07-26T14:37:19.177 回答