Frage

Ich versuche, eine E-Mail in Java zu senden, aber wenn ich den Körper der E-Mail in Outlook lesen, ist sie alle meine Zeilenumbrüche losgeworden. Ich setze \ n an den Enden der Linien aber ist es etwas Besonderes, ich brauche als das andere zu tun? Die Empfänger werden immer Outlook zu verwenden.

fand ich eine Seite auf microsoft.com, das sagt eine, es gibt „Feature“ in Outlook ‚Zeilenumbrüche entfernen‘, so das es bedeutet keine Lösung zu erhalten, um diese andere als un-checking diese Einstellung?

Danke

War es hilfreich?

Lösung

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

Andere Tipps

Ich habe gerade mit diesem heute kämpfen. Lassen Sie sich das Verhalten nennt sie die zusätzlichen Zeilenumbrüche zu entfernen „Fortsetzung“. Ein wenig Experimentieren findet das folgende Verhalten:

  • startet Jede Meldung mit Fortsetzung ab.
  • Zeilen weniger als 40 Zeichen lang lösen keine Fortsetzung, aber wenn Fortsetzung auf, werden sie ihre Zeilenumbrüche entfernt haben.
  • Zeilen 40 Zeichen oder mehr wiederum Fortsetzung auf. Es bleibt, bis ein Ereignis es auszuschalten auftritt.
  • Zeilen, die mit einem Punkt, Fragezeichen, Ausrufezeichen oder Doppelpunkt wiederum Fortsetzung off beenden. (Outlook geht davon aus, es ist das Ende eines Satzes?)
  • Zeilen, die Fortsetzung wird ausgeschaltet mit einem Zeilenumbruch starten, wird aber Fortsetzung wieder einschalten, wenn sie als 40 Zeichen länger sind.
  • Zeilen, die mit einem Tab wiederum Fortsetzung off beginnen oder enden.
  • Zeilen, die mit zwei oder mehr Räumen beginnen drehen Fortsetzung ab.
  • Zeilen, die mit 3 oder mehr Räumen Endwindung Fortsetzung ab.

Bitte beachten Sie, dass ich das alles mit Outlook versucht 2007. YMMV.
Also, wenn möglich, am Ende aller Kugel Artikel mit einem Satz beendenden Interpunktionszeichen, eine Registerkarte oder sogar drei Räume.

Sie können einen Zeilenumbruch in Outlook erzwingen, wenn eine Befestigung (oder zwei?) Tabulatoren (\ t) kurz vor dem Zeilenumbruch (CRLF).

Beispiel:

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

Es scheint 2010 auf Outlook arbeitet Bitte prüfen, ob diese auf anderen Versionen funktionieren.

Siehe auch Outlook autocleaning meine Zeilenumbrüche und meine E-Mail-Format vermasseln

Microsoft Outlook 2002 und höher entfernt "zusätzliche Zeilenumbrüche" von Textnachrichten standardmäßig (kb308319) . Das heißt, Outlook scheint einfach Zeilenvorschub und / oder Wagenrücklauf Sequenzen in Textnachrichten zu ignorieren, zusammen alle Zeilen ausgeführt wird.

Dies kann zu Problemen führen, wenn Sie versuchen, Code zu schreiben, die automatisch eine E-Mail-Nachricht generieren, um von jemandem gelesen werden, mit Outlook.

Zum Beispiel: Angenommen, Sie jeweils separate Informationen versorgen wollen auf getrennten Leitungen für Klarheit, wie folgt aus:

Transaktions braucht Aufmerksamkeit!
PostedDate: 2009.01.30
Betrag: $ 12,222.06
TransID: 8gk288g229g2kg89
Postal: 91543

Ihr Outlook Empfänger wird sehen Sie die Informationen alle zusammen zertrümmert, wie folgt:

Transaktions braucht Aufmerksamkeit! PostedDate: 2009.01.30 Betrag: $ 12,222.06 TransID: 8gk288g229g2kg89 ZipCode: 91543

Es scheint nicht, eine einfache Lösung zu sein. Alternativen sind:

  1. Sie können liefern zwei Sätze von Zeilenumbrüchen zwischen jeder Zeile. Das hindert Outlook aus den Leitungen auf eine Leitung kombiniert, aber es zeigt dann eine zusätzliche Leerzeile zwischen jeder Zeile (das umgekehrte Problem zu schaffen). Mit "liefern zwei Sätze von Zeilenumbrüchen" Ich meine, Sie verwenden sollen "\ r \ n \ r \ n" oder "\ r \ r" oder "\ n \ n", aber nicht "\ r \ n" oder „\ n \ r“.
  2. Sie können in den Körper Ihrer E-Mail-Nachricht zwei Leerzeichen am Anfang jeder Zeile liefern. Das vermeidet eine zusätzliche Leerzeile zwischen jeder Zeile einzuführen. Aber das funktioniert am besten, wenn jede Zeile in Ihrer Nachricht ziemlich kurz ist, weil der Benutzer den Text in einem sehr engen Outlook-Fenster werden die Vorschau, die das Ende jeder Zeile umschlingt in die erste Position in der nächsten Zeile, wo es nicht Line-up mit Ihren zwei Raum gegliederten Linien. Diese Strategie wurde für einige Newsletter .
  3. Sie kann aufgeben, ein Nur-Text-Format, und ein HTML-Format verwenden.

Ich hatte das gleiche Problem und eine Lösung gefunden. Versuchen Sie diese:. %0D%0A einen Zeilenumbruch hinzufügen

Ich habe HTML-Zeilenumbruch statt „\ n“ verwendet. Es hat gut funktioniert.

"\ t \ r \ n" (\ t für TAB) anstelle von "\ r \ n" Hinzufügen arbeitete für mich auf Outlook 2010. Hinweis: Zugabe von 3 Leerzeichen am Ende jeder Zeile auch gleiche tun, aber das sieht aus wie eine Programmierung hacken

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

Ich hatte mit allen oben genannten Lösungen zu kämpfen und sie haben hier nichts geholfen, weil ich ein String-Variable (Klartext aus einer JTextPane) in Kombination mit „text / html“ Formatierung verwenden in meiner E-Mail-Bibliothek.

So ist die Lösung für dieses Problem verwenden „text / plain“, statt „text / html“ und keine Notwendigkeit Rückkehr Zeichen zu ersetzen überhaupt:

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

Setzen Sie den Text in <pre> Stichwörter und Ausblick formatiert und den Text richtig angezeigt.

i definierte es in CSS inline in HTML Body wie:

CSS:

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

i definiert die font-family: Font gesetzt zu haben.

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>

Da es sich um eine Abfrage ist, nur Prozent maskierte Zeichen arbeiten, bedeutet% 0A gibt Ihnen einen Zeilenumbruch. Zum Beispiel:

&lt;a href=&quot;mailto:someone@gmail.com?Subject=TEST&amp;amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks&quot;&gt;email to me&lt;/a&gt;

Der Trick ist, die encodeURIComponent() Funktionalität von js zu verwenden:

var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:x@y.com?body=" + encodeURIComponent(formattedBody);

ERGEBNIS:

FirstLine
SecondLine
ThirdLine

Für Outlook 2010 und spätere Versionen verwenden \ t \ n anstatt mit \ r \ n.

\ r \ n wird nicht funktionieren, bis Sie Körper-Typ als Text gesetzt.

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

RESOLVED in meiner Anwendung

In meiner Anwendung habe ich versucht, eine E-Mail, deren Nachrichtentext eingegeben wurde in Textbereich durch den Benutzer zu senden. Wenn E-Mails senden wurden, Outlook automatisch entfernt Zeilenumbruch eingegeben durch den Benutzer.

z, wenn Benutzer eingegeben
Yadav
Mahesh

Ausblick angezeigt als
YadavMahesh

Auflösung: ich den Zeilenumbruch Zeichen geändert "\ r \ n" mit "\ par" (Sie erinnern Raum am Ende der RTF-Code "\ par" zu treffen) und Zeilenumbrüche restrored .

Cheers,
Mahesh

Wenn Sie in einem Video! ‚‘ (Dot) Zeichen am Ende jeder Zeile, so scheint dies Outlook ruiniert Textformatierung zu verhindern.

Versuchen Sie folgendes:

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

Viele Grüße, Mohammad Rasool Javeed

Versuchen \r\c statt \n.

EDIT: Ich denke, @ Robert Wilkinson Recht hatte. \r\n. Speicher nur nicht, was es früher.

Die \n arbeitet weitgehend für uns, aber Outlook manchmal auf sich selbst nimmt es die Zeilenumbrüche zu entfernen, wie Sie sagen.

Ich habe eine gute Lösung, dass ich es versucht, wird es fügen Sie einfach den Char (13) am Ende der Zeile wie im folgenden Beispiel:

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

, wenn die Nachricht text / plain verwenden, \ r \ n arbeiten sollte; wenn der Nachrichtentyp ist Text \ html, Verwendung < p/>

Diese für Sie hilfreich sein. versuchen "% 0A" statt "\ n". Die eigentliche Quelle ist hier.

Sie müssen hinzufügen „% 0A“, wo immer 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());

Ich hatte auch dieses Problem mit plain / text Mail-Typ. Früher verwendete ich „\ n \ n“, aber es gab zwei Zeilenumbrüche. Dann habe ich „\ t \ n“ und es funktionierte. Ich war mit StringBuffer in Java Content anzuhängen.
Der Inhalt wurde in der nächsten Zeile gedruckt in Outlook 2010 Mail.

Ich hatte auch dieses Problem mit plain / text Mail type.Form-Feed \f für mich gearbeitet.

Manchmal muss man eingeben \ r \ n zweimal Ausblick zu zwingen, die Pause zu machen.

Dies wird eine leere Zeile hinzufügen, aber alle Linien Pause.

, wenn die Arbeiten müssen mit formatierten Text mit aus HTML-Codierung zu tun. kann es leicht mit folgendem Szenario erreicht werden, die div Element on the fly erzeugt und mit <pre></pre> html-Element zu halten Formatierung.

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

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

Nicht sicher, ob es oben erwähnt wurde, aber Outlook hat eine Checkbox „Entfernen zusätzliche Zeilenumbrüche in Klartextmeldungen“ genannt Einstellung und ist standardmäßig aktiviert. Es ist in einem anderen Ort für verschiedene Versionen von Outlook befindet sich aber für das Jahr 2010 auf die Registerkarte „Datei“ gehen. Wählen Sie „Optionen => Mail“ Blättern nach unten zu „Nachrichtenformat“ Deaktivieren Sie das Kontrollkästchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top