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?
- 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/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich überprüft die E-Mail in Outlook, habe ich eine kleine info-Meldung "Zusätzliche Zeilenumbrüche in dieser Nachricht wurden entfernt" und die option, um Sie wiederherzustellen. Gmail gab keine solche Angabe (die ich gefunden habe), aber ich muss davon ausgehen, es entfernt Sie auch.
Interessanterweise hatte ich die Zeilenumbrüche an anderer Stelle im Körper, die funktioniert wie erwartet, nur diejenigen, die in der Schleife wurden als "extra".
Habe ich geändert mein code zum erstellen der E-Mail-Text mit html.
Ob jemand weiß einen Weg, um dies zu verhindern, oder, was bewirkt, dass bestimmte Zeilenumbrüche entfernt werden, lassen Sie es mich bitte wissen.
Update:
Einmal wusste ich, was ich suchte, fand ich diese post, die hilft, Dinge zu erklären, und gibt einige Alternative Lösungen. Ich habe nicht versucht jeder von Ihnen, wie ich denke, dass die Verwendung von html ist die bessere Lösung in meinem Fall.
Ich habe gerade diese lief durch LINQPad
Jeder führt wie erwartet in einem StringBuilder-Objekt Sinn.
Ich vermute, dass Sie brauchen, um hinzuzufügen
"</br>"
am Ende jeder AppendLine so etwas (nicht getestet):Gmail entfernen explizite Zeilenumbrüche. Dieser code funktioniert für mich beim senden an Google Mail als auch Outlook mit der richtigen Zeilenumbrüche intakt. Ich bin absolut nicht in der Lage zu replizieren, Ihr Problem ohne zu sehen, was Ihre Nachrichten [] - array aussieht. Es kann möglich sein, dass einige Formatierungen, könnte betrachtet werden als Zeilenumbrüche verursacht alle entfernt werden, aus? Ich habe manipuliert mein Beispiel strings und ich kann weder Outlook noch Gmail-Streifen, die Linie bricht mich.
Werde ich davon ausgehen, irgendwo in deinem code aufbaut oder ruft die Nachrichten-array, etwas geschieht, was dieses Problem verursachen. Ich würde glauben, dass es reparierbar, aber nicht ohne zu sehen, wie das Teil ist codiert.