Zeilenumbrüche entfernt von E-Mail-Körper

Ich bin der Generierung einfach eine E-Mail mit der System.Net.Mail.MailMessage Klasse und Bau der Körper mit einer StringBuilder. Ich bin die Schleife durch eine string[] und versuchen zum Anhängen einer neuen Zeile jedes mal. Das problem das ich habe ist, dass ich kann nicht scheinen, erzeugen einer neuen Zeile jedes mal. Ich kann entweder zwei oder keine.

, Was ich versucht habe:

foreach (var message in messages)
{
    body.AppendLine(message);
}

foreach (var message in messages)
{
    body.Append(message + "\n");
}

foreach (var message in messages)
{
    body.Append(message + System.Environment.NewLine);
}

Ich habe auch versucht mit string.Format().

Für jedes Beispiel oben, bekomme ich das gleiche Ergebnis. Keine neue Zeile generiert wird.

Wenn ich versuche im folgenden, allerdings bekomme ich das erwartete Ergebnis. Eine neue Zeile mit einer Leerzeile dazwischen.

foreach (var message in messages)
{
    body.AppendLine(message + System.Environment.NewLine);
}

Warum tut Sie das und was kann ich tun, um nur einen einzigen neuen Zeile jedes mal?

Update:

Also ich habe festgestellt, dass Outlook und wahrscheinlich Gmail (noch nicht getestet, auch andere) tatsächlich entfernen Sie einige Zeilenumbrüche und andere nicht. Weiß jemand warum oder wie Sie bestimmen, was zu entfernen?

Zeilenumbrüche entfernt von E-Mail-Körper

  • Warum denken Sie, dass neue Zeilen, die nicht Hinzugefügt?
  • Alles zeigt auf der gleichen Linie.
  • In welchem format ist die E-mail-Nachricht? Wenn es HTML, die Sie benötigen <br/> für Zeilenumbrüche.
  • In deinem Beispiel arbeiten, die Sie Anhängen einer Zeile mit einem Zeilenumbruch. In der man gar nicht, Sie sind nur mit Anhängen, nur mit einem Zeilenumbruch. Es ist mir nicht klar, das Problem, das Sie haben.
  • Es ist nicht html
  • Ich denke Sie missverstehen, das "arbeiten" - Beispiel fügt zwei Zeilen, wie ich bin mit appendline und newline. Die anderen Beispiele denke ich sollte anfügen, aber ich bekomme nicht einen Zeilenumbruch in der E-Mail.
  • Was gibt body.ToString().Split('\n').Length?
  • Gute Frage. Gerade lief es und tut es registrieren die newline auf split, ich bin mir nur nicht sehen Sie das Ergebnis für einige Grund.
  • Wie Sie bestätigen, dass keine neuen Zeilen Hinzugefügt werden? Ist es in E-mail-client? Sie sagte, dass es nicht in html, sondern vielleicht E-mail-client behandelt es als solches.
  • Nur zeigen Sie das Ergebnis des Ausdrucks in der consloe/Ausgang/messsagebox. Was meinst du it does register the newline on split?
  • Ich meine, es tut split, wo die Zeilenumbrüche Hinzugefügt werden, was genau Fragen Sie? Es gibt eine größer als die Länge von meinem string[]...
  • Ich habe explizit festgelegt IsBodyHtml auf false ein, auch warum mein letztes Beispiel mit zwei neuen Linien der Arbeit?
  • Ok, dann haben Sie einen string, getrennt durch Zeilenumbrüche.
  • Outlook und einige andere E-Mail-clients haben eine Tendenz, Zeilenumbrüche entfernen, die denken, Sie sind extra. Haben Sie versucht, die Leser in einem anderen E-Mail client?
  • Netter Gedanke, aber Nein, ich schickte es an meine gmail und erhalten die gleiche Sache.
  • Fügen Sie Ihren code sendet die E-Mail zusammen mit smtp-Web.config-Einstellungen, wenn vorhanden.
  • Versuchen Sie E-Mail in html-format und nutzen <br /> für die Zeilenumbrüche
  • Ich zweite die "weitere code hinzufügen" Kommentar, und auch, können Sie überprüfen Sie die Eigenschaften der E-Mail und sicherzustellen, dass Sie sind "Content-Type: text/plain; charset="UTF-8". Ich kann das problem reproduzieren, wenn IsBodyHtml=false.
  • Ich bin damit einverstanden, dass wird funktionieren, aber es ist nicht wirklich die Frage beantworten.
  • Ich werde die Eigenschaften prüfen und zu aktualisieren, halten Sie auf.
  • Was passiert, wenn man mit "\r\n" anstelle von "\n" ? webdeveloper.com/forum/...

InformationsquelleAutor aw04 | 2014-04-08
Schreibe einen Kommentar