Comment formater une chaîne dans un courrier électronique pour qu'Outlook imprime les sauts de ligne?

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

Question

J'essaie d'envoyer un courrier électronique en Java, mais lorsque je lis le corps du courrier électronique dans Outlook, il se débarrasse de tous mes sauts de ligne. J'insère \ n au bout des lignes, mais y a-t-il autre chose que je dois faire d'autre que cela? Les destinataires vont toujours utiliser Outlook.

J'ai trouvé une page sur microsoft.com qui indique qu'il existe une option "Supprimer les sauts de ligne" & "; fonctionnalité &"; dans Outlook, cela signifie-t-il qu'il n'y a pas de solution pour contourner cela autre que la non-vérification de ce paramètre?

Merci

Était-ce utile?

La solution

Vous devez utiliser \r\n comme solution.

Autres conseils

Je viens de me battre avec cela aujourd'hui. Appelons le comportement consistant à supprimer les sauts de ligne supplémentaires & Quot; suite. & Quot; Un peu d’expérimentation trouve le comportement suivant:

  • Chaque message commence par la suite désactivée.
  • Les lignes de moins de 40 caractères ne déclenchent pas la poursuite, mais si la poursuite est activée, leurs sauts de ligne seront supprimés.
  • Les lignes de 40 caractères ou plus activent la continuation. Il reste allumé jusqu'à ce qu'un événement se produise pour le désactiver.
  • Les lignes qui se terminent par un point, un point d’interrogation, un point d’exclamation ou deux points désactivent la continuation. (Outlook suppose que c'est la fin d'une phrase?)
  • Les lignes qui désactivent la continuation commencent par un saut de ligne, mais réactiveront la continuation si elles sont plus longues que 40 caractères.
  • Les lignes qui commencent ou se terminent par une tabulation désactivent la continuation.
  • Les lignes commençant par 2 espaces ou plus désactivent la continuation.
  • Les lignes qui se terminent par 3 espaces ou plus désactivent la continuation.

Veuillez noter que j'ai tout essayé avec Outlook 2007. YMMV.
Donc, si possible, terminez tous les éléments de puces avec un signe de ponctuation, une tabulation ou même trois espaces de fin de phrase.

Vous pouvez forcer un saut de ligne dans Outlook lorsque vous attachez un (ou deux?) caractères de tabulation (\ t) juste avant le saut de ligne (CRLF).

Exemple:

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

Cela semble fonctionner avec Outlook 2010. Merci de vérifier si cela fonctionne avec d'autres versions.

Voir aussi Outlook nettoyage automatique de ma ligne et rupture du format de courrier électronique

Microsoft Outlook 2002 et versions ultérieures supprime " sauts de ligne supplémentaires " à partir des messages texte par défaut, (kb308319) . Autrement dit, Outlook semble simplement ignorer les séquences de saut de ligne et / ou de retour chariot dans les messages texte, en exécutant toutes les lignes ensemble.

Cela peut poser problème si vous essayez d'écrire du code qui générera automatiquement un message électronique à lire par une personne utilisant Outlook.

Par exemple, supposons que vous souhaitiez fournir des informations distinctes, chacune sur des lignes distinctes, par souci de clarté, comme suit:

La transaction a besoin d'attention!
Publié le 30/01/2009
Montant: 12 222,06 $
TransID: 8gk288g229g2kg89
Code postal: 91543

Votre destinataire Outlook verra toutes les informations écrasées comme suit:

La transaction a besoin d'attention! Date de publication: 30/01/2009 Montant: 12 222,06 USD Numéro de transaction: 8gk288g229g2kg89 Code postal: 91543

Il ne semble pas y avoir de solution facile. Les alternatives sont:

  1. Vous pouvez fournir deux ensembles de sauts de ligne entre chaque ligne. Cela empêche Outlook de combiner les lignes sur une ligne, mais il affiche ensuite une ligne vierge supplémentaire entre chaque ligne (ce qui crée le problème opposé). Par & Quot; fournissez deux ensembles de sauts de ligne & Quot; Je veux dire que vous devriez utiliser & Quot; \ r \ n \ r \ n & Quot; ou " \ r \ r " ou " \ n \ n " mais pas " \ r \ n " ou " \ n \ r ".
  2. Vous pouvez fournir deux espaces au début de chaque ligne du corps de votre message électronique. Cela évite d'introduire une ligne vierge supplémentaire entre chaque ligne. Mais cela fonctionne mieux si chaque ligne de votre message est assez courte, parce que l'utilisateur peut prévisualiser le texte dans une fenêtre Outlook très étroite qui entoure la fin de chaque ligne jusqu'à la première position de la ligne suivante, où elle ne le fera pas. aligner avec vos lignes en retrait de deux espaces. Cette stratégie a été utilisée pour certains éléments de la >
  3. Vous pouvez renoncer à utiliser un format de texte brut et utiliser un format html.

J'ai eu le même problème et j'ai trouvé une solution. Essayez ceci: %0D%0A pour ajouter un saut de ligne.

J'ai utilisé un saut de ligne HTML au lieu de & "; \ n &"; . Cela a bien fonctionné.

Ajout de " \ t \ r \ n " (\ t pour la tabulation) au lieu de & "; \ r \ n &"; travaillé pour moi sur Outlook 2010. Note: ajouter 3 espaces à la fin de chaque ligne fait aussi la même chose mais ça ressemble à un hack de programmation!

Vous devez envoyer des emails HTML. Avec <br /> dans le courrier électronique, vos sauts de ligne seront toujours activés.

Je me débattais avec toutes les solutions ci-dessus et rien n'y faisait, car j'avais utilisé une variable String (texte brut d'un JTextPane) en combinaison avec " text / html " formatage dans ma bibliothèque de courrier électronique.

La solution à ce problème consiste donc à utiliser & "text / plain &", au lieu de & "text / html &"; et nul besoin de remplacer les caractères de retour:

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

Mettez le texte dans <pre> Les balises et Outlook formateront et afficheront le texte correctement.

je l'ai défini dans CSS intégré dans HTML Body comme:

CSS:

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

J'ai défini la famille de polices à définir.

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>

Comme il s'agit d'une requête, seul le pourcentage de caractères d'échappement utilisés fonctionne, ce qui signifie que% 0A vous donne un saut de ligne. Par exemple,

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

L'astuce consiste à utiliser la encodeURIComponent() fonctionnalité de js:

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

RÉSULTAT:

FirstLine
SecondLine
ThirdLine

Pour Outlook 2010 et les versions ultérieures, utilisez \ t \ n au lieu de \ r \ n.

.

\ r \ n ne fonctionnera que si vous définissez le type de corps en tant que texte.

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

RÉSOLU DANS MA APPLICATION

Dans ma candidature, j'essayais d'envoyer un courrier électronique dont le corps du message avait été saisi par l'utilisateur dans la zone de texte. Lors de l'envoi du courrier, Outlook supprimait automatiquement le saut de ligne saisi par l'utilisateur.

Par exemple, si l'utilisateur a entré
Yadav
Mahesh

Outlook l'a affiché comme
YadavMahesh

Résolution: J'ai modifié le caractère de saut de ligne & "; \ r \ n &"; avec " \ par " (souvenez-vous de frapper l'espace à la fin du code RTF & "; \ par &";) et les sauts de ligne sont restaurés.

À la vôtre,
Mahesh

Si vous pouvez ajouter un '.' (point) à la fin de chaque ligne, cela semble empêcher Outlook de gâcher le formatage du texte.

Essayez ceci:

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

Cordialement, Mohammad Rasool Javeed

Essayez \r\c au lieu de \n.

EDIT: Je pense que @Robert Wilkinson avait raison. \r\n La mémoire n'est plus ce qu'elle était.

Le \n fonctionne largement pour nous, mais Outlook se charge parfois de supprimer les sauts de ligne, comme vous le dites.

J'ai une bonne solution que je l'ai essayée, il suffit d'ajouter le caractère (13) en fin de ligne comme dans l'exemple suivant:

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

si le message est text / plain, \ r \ n devrait fonctionner; si le type de message est text \ html, utilisez < p/>

Ceci doit être utile pour vous. essayez "% 0A " au lieu de & "; \ n &"; La véritable source est ici.

Vous devez ajouter "% 0A " où que ce soit, vous avez besoin d’une nouvelle ligne dans votre code. Dans votre cas

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

J'ai également eu ce problème avec le type de courrier brut / texte. Plus tôt, j’avais utilisé & Quot; \ n \ n & Quot; mais il y a eu deux sauts de ligne. Ensuite, j'ai utilisé & "; \ T \ n &"; et cela a fonctionné. J'utilisais StringBuffer en java pour ajouter du contenu.
Le contenu a été imprimé sur la ligne suivante du courrier Outlook 2010.

J'ai également eu ce problème avec le type de courrier brut / texte.Form Feed \f a fonctionné pour moi.

Vous devez parfois entrer \ r \ n deux fois pour forcer Outlook à faire la pause.

Ceci ajoutera une ligne vide mais toutes les lignes seront interrompues.

si le travail doit être fait avec du texte formaté sans encodage HTML Cela peut être facilement réalisé avec le scénario suivant: crée un élément div à la volée et utilise < code> < pre > < / pre > élément HTML pour conserver la mise en forme.

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

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

Je ne sais pas si cela a été mentionné ci-dessus, mais Outlook a un paramètre de case à cocher appelé "Supprimer les sauts de ligne supplémentaires dans les messages en texte brut". et est coché par défaut. Il se trouve à un emplacement différent pour les différentes versions d'Outlook, mais pour 2010, cliquez sur le lien "Fichier". languette. Sélectionnez " Options = > Mail " Faites défiler jusqu'à " Format du message " Décochez la case.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top