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
Sie müssen \r\n
als Lösung verwenden.
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:
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.
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
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:
Ich hatte das gleiche Problem und fand eine Lösung. Versuchen Sie Folgendes: %0D%0A
, um einen Zeilenumbruch hinzuzufügen.
Ich habe HTML-Zeilenumbruch anstelle von "\ n" verwendet. Es hat gut funktioniert.
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!
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");
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&amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks">email to me</a>
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>
Verwenden Sie für Outlook 2010 und spätere Versionen\ t\nanstatt\r\n.
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
Sie müssen HTML-E-Mails senden. Mit <br />
s in der E-Mail haben Sie immer Ihre Zeilenumbrüche.
Ich hatte auch dieses Problem mit Klartext-/Textnachrichten. Form-Feed \f
arbeitete für mich.
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());
wenn die Nachricht text/plain verwendet wird, sollte\r\n funktionieren. Wenn der Nachrichtentyp text\html ist, verwenden Sie < p/>
.
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.
Der \n
funktioniert weitgehend für uns, aber Outlook nimmt es manchmal selbst in Kauf, um die Zeilenumbrüche zu entfernen.
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>";
}
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
\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);
Wenn Sie ein "." (Punkt) am Ende jeder Zeile scheint das die Textformatierung von Outlook zu ruinieren.
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)
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.
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.