Come faccio a formattare una Stringa in un messaggio di posta elettronica di Outlook stampa le interruzioni di riga?

StackOverflow https://stackoverflow.com/questions/136052

Domanda

Sto cercando di inviare una mail in Java, ma quando ho letto il testo dell'e-mail di Outlook, è liberato di tutti i miei gli "a capo".Sto mettendo alla fine delle righe, ma c'è qualcosa di speciale che ho bisogno di fare altro rispetto a che?I ricevitori sono sempre andando ad essere utilizzando Outlook.

Ho trovato una pagina su microsoft.com che dice che c'è un 'Rimuovere le interruzioni di riga' "caratteristica" in Outlook in modo questo significa che non c'è una soluzione per aggirare altro che deselezionare l'impostazione?

Grazie

È stato utile?

Soluzione

Devi usare \r\n come soluzione.

Altri suggerimenti

Ho appena litigato con questo oggi. Chiamiamo il comportamento di rimuovere le interruzioni di riga extra & Quot; continuazione. & Quot; Un piccolo esperimento trova il seguente comportamento:

  • Ogni messaggio inizia con la continuazione disattivata.
  • Le righe di lunghezza inferiore a 40 caratteri non attivano la continuazione, ma se la continuazione è attiva, verranno rimosse le interruzioni di riga.
  • Le righe di 40 caratteri o più attivano la continuazione. Rimane attivo fino a quando si verifica un evento per spegnerlo.
  • Le linee che terminano con punto, punto interrogativo, punto esclamativo o due punti disattivano la continuazione. (Outlook presuppone che sia la fine di una frase?)
  • Le linee che disattivano la continuazione inizieranno con un'interruzione di linea, ma riattiveranno la continuazione se sono più lunghe di 40 caratteri.
  • Le linee che iniziano o finiscono con una scheda disattivano la continuazione.
  • Le linee che iniziano con 2 o più spazi disattivano la continuazione.
  • Le linee che terminano con 3 o più spazi disattivano la continuazione.

Si noti che ho provato tutto questo con Outlook 2007. YMMV.
Quindi, se possibile, termina tutti gli elementi punto elenco con un segno di punteggiatura che termina la frase, una scheda o anche tre spazi.

È possibile forzare un'interruzione di linea in Outlook quando si collegano uno (o due?) caratteri di tabulazione (\ t) appena prima dell'interruzione di riga (CRLF).

Esempio:

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

Sembra funzionare su Outlook 2010. Verifica se funziona su altre versioni.

Vedi anche Outlook pulendo automaticamente le mie interruzioni di riga e rovinando il mio formato e-mail

Microsoft Outlook 2002 e versioni successive rimuovono " interruzioni di riga extra " dai messaggi di testo per impostazione predefinita (kb308319) . Cioè, Outlook sembra semplicemente ignorare le sequenze di feed di riga e / o ritorno a capo nei messaggi di testo, eseguendo tutte le righe insieme.

Ciò può causare problemi se stai cercando di scrivere codice che genererà automaticamente un messaggio di posta elettronica che verrà letto da qualcuno che utilizza Outlook.

Ad esempio, supponiamo di voler fornire informazioni separate ciascuna su righe separate per chiarezza, in questo modo:

La transazione richiede attenzione!
Data di pubblicazione: 30/01/2009
Importo: $ 12.222,06
TransID: 8gk288g229g2kg89
Codice postale: 91543

Il destinatario di Outlook vedrà le informazioni tutte fracassate insieme, come segue:

La transazione richiede attenzione! Data di pubblicazione: 30/01/2009 Importo: $ 12.222,06 TransID: 8gk288g229g2kg89 Codice postale: 91543

Non sembra esserci una soluzione facile. Le alternative sono:

  1. Puoi fornire due set di interruzioni di riga tra ogni riga. Ciò impedisce a Outlook di combinare le righe su una riga, ma visualizza quindi una riga vuota aggiuntiva tra ciascuna riga (creando il problema opposto). Con & Quot; fornire due serie di interruzioni di linea & Quot; Voglio dire che dovresti usare & Quot; \ r \ n \ r \ n & Quot; oppure " \ r \ r " oppure " \ n \ n " ma non " \ r \ n " o " \ n \ r " ;.
  2. Puoi fornire due spazi all'inizio di ogni riga nel corpo del tuo messaggio e-mail. Ciò evita di introdurre una riga vuota in più tra ogni riga. Ma questo funziona meglio se ogni riga del tuo messaggio è piuttosto breve, perché l'utente potrebbe visualizzare l'anteprima del testo in una finestra di Outlook molto stretta che avvolge la fine di ogni riga attorno alla prima posizione sulla riga successiva, dove non lo farà allineati con le tue linee rientrate in due spazi. Questa strategia è stata utilizzata per alcuni

    Ho avuto lo stesso problema e ho trovato una soluzione. Prova questo: %0D%0A per aggiungere un'interruzione di riga.

Ho usato l'interruzione di riga html anziché " \ n " . Ha funzionato bene.

Aggiunta di " \ t \ r \ n " (\ t per TAB) invece di " \ r \ n " ha lavorato per me su Outlook 2010. Nota: l'aggiunta di 3 spazi alla fine di ogni riga fa la stessa cosa ma sembra un hack di programmazione!

Devi inviare e-mail HTML. Con <br /> s nell'email, avrai sempre le interruzioni di riga.

Avevo lottato con tutte le soluzioni di cui sopra e nulla mi ha aiutato qui, perché ho usato una variabile String (testo semplice da un JTextPane) in combinazione con " text / html " formattazione nella mia libreria di posta elettronica.

Quindi, la soluzione a questo problema è usare " text / plain " ;, invece di " text / html " e non è necessario sostituire affatto i caratteri di ritorno:

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

Mettere il testo in <pre> Tag e outlook verrà formato e visualizzare correttamente il testo.

ho definito nel CSS inline nel Corpo HTML come:

CSS:

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

ho definito il tipo di carattere-famiglia per set di caratteri.

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>

Poiché si tratta di una query, funzionano solo i caratteri di escape di percentuale, significa che% 0A ti dà un'interruzione di riga. Ad esempio,

&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;

Il trucco è usare la funzionalità encodeURIComponent() di js:

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

Risultati:

FirstLine
SecondLine
ThirdLine

Per Outlook 2010 e versioni successive, utilizzare \t\n anziché utilizzare \ r \ n.

non funzionerà fino a quando si imposta un tipo di corpo come testo.

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

RISOLTO NELLA MIA DOMANDA

Nella mia applicazione, stavo cercando di inviare un'e-mail il cui corpo del messaggio era stato digitato dall'utente nell'area di testo. Quando è stata inviata la posta, Outlook ha rimosso automaticamente l'interruzione di riga immessa dall'utente.

ad es. se l'utente è entrato
Yadav
Mahesh

Outlook lo ha visualizzato come
YadavMahesh

Risoluzione: ho cambiato il carattere di interruzione di riga " \ r \ n " con " \ par " (ricordati di toccare lo spazio alla fine del codice RTF " \ par ") e le interruzioni di riga sono limitate.

Saluti,
Mahesh

Se puoi aggiungere un '.' (punto) carattere alla fine di ogni riga, questo sembra impedire a Outlook di rovinare la formattazione del testo.

Prova questo:

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

Saluti, Mohammad Rasool Javeed

Prova \r\c invece di \n.

EDIT: penso che @Robert Wilkinson avesse ragione. \r\n. La memoria non è più quella di una volta.

Il \n funziona in gran parte per noi, ma a volte Outlook si impegna a rimuovere le interruzioni di linea come dici tu.

Ho una buona soluzione che ho provato, è solo aggiungere Char (13) alla fine della riga come nell'esempio seguente:

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

se il messaggio è text / plain usando, \ r \ n dovrebbe funzionare; se il tipo di messaggio è text \ html, usa < p/>

Questo deve essere utile per te. prova "% 0A " anziché " \ n " ;. La vera fonte è qui.

Devi aggiungere "% 0A " dove mai hai bisogno di una nuova riga nel tuo codice. Nel tuo caso

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

Ho riscontrato anche questo problema con il tipo di posta semplice / di testo. In precedenza, ho usato & Quot; \ n \ n & Quot; ma c'erano due interruzioni di riga. Quindi, ho usato & Quot; \ t \ n & Quot; e ha funzionato. Stavo usando StringBuffer in Java per aggiungere contenuti.
Il contenuto è stato stampato nella riga successiva nella posta di Outlook 2010.

Ho riscontrato questo problema anche con il tipo di posta normale / di testo. Il feed di form \f ha funzionato per me.

A volte devi inserire \ r \ n due volte per forzare Outlook a fare la pausa.

Questo aggiungerà una riga vuota ma tutte le righe saranno interrotte.

se è necessario eseguire lavori con testo formattato senza codifica HTML. si può facilmente ottenere con il seguente scenario che crea l'elemento div al volo e usando < code> < pre > < / pre > elemento html per mantenere la formattazione.

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

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

Non sono sicuro se è stato menzionato sopra, ma Outlook ha un'impostazione di casella chiamata " Rimuovi interruzioni di riga extra nei messaggi di testo semplice " ed è selezionato per impostazione predefinita. Si trova in un punto diverso per le diverse versioni di Outlook ma per il 2010 vai al "File" scheda. Seleziona " Opzioni = > Mail " Scorri verso il basso fino a " Formato messaggio " Deseleziona la casella di controllo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top