2013-07-24 5 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? edit – butterbox

+0

@butterbox Это не решит его текущую проблему. – Tyler

+1

@kcducttaper: Пожалуйста, разместите свое решение не как редактирование, а как ответ, а затем примите ответ (как только вам будет позволено), так что вопрос будет отображаться как разрешенный. – stakx

ответ

0

Я понял. Благодаря Microbloft Outlook автоматически удаляет то, что, по его мнению, является чрезмерными командами новой строки. Я исправил его, просто добавив период перед новой линией, поэтому:

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

Я бы включил тело HTML, а затем использовал <br />. По какой-то причине часто службы электронной почты являются отрывочными. Однако у меня никогда не возникало проблемы с использованием среды .Newline();

emailAdmin.IsBodyHtml = true; 

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

Этот способ просто позволяет использовать линию с использованием html.

Также вы можете добавить два, а не одно, но это зависит только от личных предпочтений.

ИЛИ

Для пути ОП ответил на свой вопрос вы могли бы сделать это вместо:

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

для новой линии на на Unix платформах вы используете: "\r\n" и на Unix вы используете "\n", но вы можете использовать Environment.NewLine, и он решит для вас.

+0

ОП попытался использовать их, как указано. –

2

Вместо

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

Используйте намного короче

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

Вы можете сделать то же самое с истекшим сроком действия паролей, конечно.

Если по какой-либо причине это не решит вашу проблему, просто используйте Html в теле письма и разделите его тегом <br />.

Смежные вопросы