it-swarm.com.de

Wie formatiere ich eine Zeichenfolge in einer E-Mail, damit Outlook die Zeilenumbrüche druckt?

Ich versuche, eine E-Mail in Java zu senden, aber wenn ich den Hauptteil der E-Mail in Outlook lese, werden alle Zeilenumbrüche entfernt. Ich setze\n am Ende der Zeilen ein, aber muss ich etwas anderes tun? Die Empfänger verwenden immer Outlook. 

Ich habe auf Microsoft.com eine Seite gefunden, die besagt, dass es in Outlook eine Funktion zum Entfernen von Zeilenumbrüchen gibt. Das bedeutet, dass es keine andere Lösung gibt, als diese Einstellung zu deaktivieren.

Vielen Dank

64
MattGrommes

Sie müssen \r\n als Lösung verwenden.

25

Ich habe heute gerade damit gekämpft. Nennen wir das Verhalten beim Entfernen der zusätzlichen Zeilenumbrüche als "Fortsetzung". Ein wenig experimentieren findet folgendes Verhalten:

  • Jede Nachricht beginnt mit der Weiterleitung aus. 
  • Zeilen mit weniger als 40 Zeichen lösen keine Fortsetzung aus, aber wenn die Fortsetzung aktiviert ist, werden die Zeilenumbrüche entfernt. 
  • Zeilen ab 40 Zeichen aktivieren die Fortsetzung. Es bleibt eingeschaltet, bis ein Ereignis eintritt, um es auszuschalten. 
  • Zeilen, die mit einem Punkt, einem Fragezeichen, einem Ausrufezeichen oder einem Doppelpunkt enden, deaktivieren die Fortsetzung. (Outlook geht davon aus, dass es das Ende eines Satzes ist?) 
  • Zeilen, die die Fortsetzung deaktivieren, beginnen mit einem Zeilenumbruch, werden jedoch wieder aktiviert, wenn sie länger als 40 Zeichen sind. 
  • Zeilen, die mit einem Tabulator beginnen oder enden, deaktivieren die Fortsetzung. 
  • Zeilen, die mit 2 oder mehr Leerzeichen beginnen, deaktivieren die Fortsetzung. 
  • Zeilen, die mit 3 oder mehr Leerzeichen enden, deaktivieren die Fortsetzung. 

Bitte beachten Sie, dass ich dies alles mit Outlook 2007 versucht habe. YMMV.
Beenden Sie, wenn möglich, alle Aufzählungselemente mit einem Satzzeichen, einem Tabulator oder sogar drei Leerzeichen.

173
mtruesdell

Sie können einen Zeilenumbruch in Outlook erzwingen, wenn Sie ein Tabulatorzeichen (\ t) unmittelbar vor dem Zeilenumbruch (CRLF) anhängen.

Beispiel:

This is my heading in the mail\t\n
Just here Outlook is forced to begin a new line.

Es scheint an Outlook 2010 zu funktionieren. Bitte testen Sie, ob dies auch bei anderen Versionen funktioniert.

Siehe auch Outlook, das meine Zeilenumbrüche automatisch löscht und mein E-Mail-Format verstellt

26
stephg

Microsoft Outlook 2002 und höher entfernt standardmäßig "zusätzliche Zeilenumbrüche" aus Textnachrichten (kb308319) . Das heißt, Outlook scheint Zeilenumbrüche und/oder Zeilenumbrüche in Textnachrichten einfach zu ignorieren und alle Zeilen zusammen auszuführen.

Dies kann zu Problemen führen, wenn Sie versuchen, Code zu schreiben, der automatisch eine E-Mail-Nachricht generiert, die von jemandem gelesen wird, der Outlook verwendet.

Angenommen, Sie möchten der Übersichtlichkeit halber separate Informationen in jeweils separaten Zeilen bereitstellen:

Transaktion braucht Aufmerksamkeit!
VeröffentlichtDatum: 30.01.2009
Betrag: $ 12.222,06
TransID: 8 gk288g229g2kg89
Postleitzahl: 91543

Ihr Outlook-Empfänger sieht die Informationen wie folgt zusammen:

Transaktion braucht Aufmerksamkeit! PostedDate: 30.01.2009 Anzahl: $ 12,222.06 TransID: 8gk288g229g2kg89 Postleitzahl: 91543

Es scheint keine einfache Lösung zu geben. Alternativen sind:

  1. Sie können zwei Gruppen von Zeilenumbrüchen zwischen den Zeilen angeben. Das hindert Outlook jedoch daran, die Zeilen in einer Zeile zu kombinieren, zeigt jedoch eine zusätzliche leere Zeile zwischen jeder Zeile an (das gegenteilige Problem wird erstellt). Mit "zwei Zeilenumbrüche angeben" sollten Sie "\ r\n\r\n" oder "\ r\r" oder "\ n\n" verwenden, aber nicht "\ r\n" oder "\ n"\r ".
  2. Sie können am Anfang jeder Zeile im Text Ihrer E-Mail-Nachricht zwei Leerzeichen eingeben. Dadurch wird vermieden, dass zwischen jeder Zeile eine zusätzliche Leerzeile eingefügt wird. Dies funktioniert jedoch am besten, wenn jede Zeile in Ihrer Nachricht relativ kurz ist, da der Benutzer den Text möglicherweise in einem sehr engen Outlook-Fenster in der Vorschau anzeigt, wobei das Ende jeder Zeile an die erste Position in der nächsten Zeile umgebrochen wird, wo dies nicht der Fall ist richten Sie sich mit Ihren zwei Leerzeichen ein. Diese Strategie wurde für einige Newsletter verwendet.
  3. Sie können die Verwendung eines Nur-Text-Formats und eines HTML-Formats aufgeben.
23
user60849

Ich hatte das gleiche Problem und fand eine Lösung. Versuchen Sie Folgendes: %0D%0A, um einen Zeilenumbruch hinzuzufügen.

11
Mark

Ich habe HTML-Zeilenumbruch anstelle von "\ n" verwendet. Es hat gut funktioniert.

3
rashini

Das Hinzufügen von "\ t\r\n" (\ t für TAB) anstelle von "\ r\n" funktionierte für mich in Outlook 2010. Hinweis: Durch das Hinzufügen von 3 Leerzeichen am Ende jeder Zeile wird dasselbe gemacht, was jedoch wie ein Programmier-Hack aussieht!

2
supernova

Ich hatte mit all den oben genannten Lösungen zu kämpfen und hier half nichts, da ich in meiner E-Mail-Bibliothek eine String-Variable (Nur-Text aus einem JTextPane) in Kombination mit der Formatierung "Text/HTML" verwendete.

Die Lösung für dieses Problem besteht also darin, "text/plain" anstelle von "text/html" zu verwenden und keine Rückgabezeichen zu ersetzen.

MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");
1
DreamZeppelin

Da es sich um eine Abfrage handelt, funktionieren nur Prozent der Zeichen mit Escape-Zeichen, dh,% 0A gibt Ihnen einen Zeilenumbruch. Zum Beispiel,

<a href="mailto:[email protected]?Subject=TEST&body=Hi there,%0A%0AHow are you?%0A%0AThanks">email to me</a>
1
Lingfa

Fügen Sie den Text in <pre> Tags ein, und Outlook formatiert und zeigt den Text korrekt an. 

ich habe es in CSS inline in HTML Body definiert: 

CSS:

pre {
 font-family: Verdana, Geneva, sans-serif;
}

ich habe die Schriftfamilie definiert, um die Schrift festlegen zu müssen. 

HTML: 

<td width="70%"><pre>Entry Date/Time:       2013-09-19 17:06:25
Entered By:     Chris

worklog mania

____________________________________________________________________________________________________

Entry Date/Time:        2013-09-19 17:05:42
Entered By:     Chris

this is a new Worklog Entry</pre></td>
1

Verwenden Sie für Outlook 2010 und spätere Versionen\ t\nanstatt\r\n.

1
rkg

Der Trick besteht darin, die encodeURIComponent()-Funktionalität von js zu verwenden:

var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:[email protected]?body=" + encodeURIComponent(formattedBody);

ERGEBNIS:

FirstLine
SecondLine
ThirdLine
1
AlCoPaine

Sie müssen HTML-E-Mails senden. Mit <br />s in der E-Mail haben Sie immer Ihre Zeilenumbrüche.

1
hova

Ich hatte auch dieses Problem mit Klartext-/Textnachrichten. Form-Feed \f arbeitete für mich. 

0
Abhinav

Das muss für Sie hilfreich sein. Versuchen Sie "% 0A" anstelle von "\ n". Die eigentliche Quelle ist hier.

Sie müssen "% 0A" hinzufügen, wenn Sie eine neue Zeile in Ihrem Code benötigen. In Ihrem Fall 

 abcParameters.put(defConstants.REPORT_MESSAGE, "Invalid file sent by tt. Hence ffgghh  was unable
              to process it : " + s+ "%0A" +e.getMessage().toString());
0
Karthikeyan

wenn die Nachricht text/plain verwendet wird, sollte\r\n funktionieren. Wenn der Nachrichtentyp text\html ist, verwenden Sie < p/>.

0
lwpro2

Versuchen Sie \r\c anstelle von \n.

EDIT: Ich denke, @Robert Wilkinson hatte es richtig. \r\n. Erinnerung ist einfach nicht das, was es einmal war.

0
EBGreen

Der \n funktioniert weitgehend für uns, aber Outlook nimmt es manchmal selbst in Kauf, um die Zeilenumbrüche zu entfernen.

0
cagcowboy

wenn mit formatiertem Text ohne HTML-Codierung gearbeitet werden muss, kann dies einfach mit dem folgenden Szenario erreicht werden, dass das div-Element im Handumdrehen erstellt und das <pre></pre>-HTML-Element zum Formatieren verwendet.

var email_body = htmlEncode($("#Body").val());

 function htmlEncode(value) {
    return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}
0
Lyubomyr

Versuche dies:

message.setContent(new String(body.getBytes(), "iso-8859-1"),
                    "text/html; charset=\"iso-8859-1\"");

Viele Grüße, Mohammad Rasool Javeed

IN MEINER ANWENDUNG GELÖST

In meiner Anwendung habe ich versucht, eine E-Mail zu senden, deren Nachrichtentext vom Benutzer im Textbereich eingegeben wurde. Wenn E-Mails gesendet wurden, entfernte Outlook automatisch den vom Benutzer eingegebenen Zeilenumbruch.

z. B. wenn der Benutzer eingegeben hat
Yadav
Mahesh

Outlook hat es als angezeigt 
Yadav Mahesh

Resolution: Ich habe das Zeilenumbruchszeichen "\ r\n" mit "\ par" geändert (Denken Sie daran, das Leerzeichen am Ende von RTF code "\ par" zu markieren) und die Zeilenumbrüche werden wiederhergestellt .

Prost,
Mahesh

0
Mahesh Yadav

\r\n funktioniert erst, wenn Sie als Text den Textkörper festlegen.

message.setBody(MessageBody.getMessageBodyFromText(msg));
BodyType type = BodyType.Text;
message.getBody().setBodyType(type);
0
vik

Wenn Sie ein "." (Punkt) am Ende jeder Zeile scheint das die Textformatierung von Outlook zu ruinieren.

0
monojohnny

Ich habe eine gute Lösung, die ich ausprobiert habe. Fügen Sie einfach Char (13) am Zeilenende hinzu, wie im folgenden Beispiel:

Dim S As String
 S = "Some Text" & Chr(13)
 S = S + "Some Text" & Chr(13)
0
Mohamed Selim

Ich hatte auch dieses Problem mit Nur-Text-Mail-Typ. Früher habe ich "\ n\n" verwendet, aber es gab zwei Zeilenumbrüche. Dann habe ich "\ t\n" verwendet und es hat funktioniert. Ich habe StringBuffer in Java zum Anhängen von Inhalten verwendet.
Der Inhalt wurde in der nächsten Zeile in Outlook 2010-E-Mail gedruckt.

0
thiru

Manchmal müssen Sie\r\n zweimal eingeben, damit Outlook die Unterbrechung durchführt.

Dadurch wird eine leere Zeile hinzugefügt, aber alle Zeilen werden unterbrochen.

0
fjkjava