81 votes

Comment puis-je formater une chaîne de caractères dans un courriel pour qu'Outlook imprime les sauts de ligne ?

J'essaie d'envoyer un courriel en Java, mais lorsque je lis le corps du courriel dans Outlook, tous mes sauts de ligne ont disparu. Je mets \n aux extrémités des lignes, mais dois-je faire quelque chose de spécial à part cela ? Les destinataires utiliseront toujours Outlook.

J'ai trouvé une page sur microsoft.com qui indique qu'il existe une "fonctionnalité" de "suppression des sauts de ligne" dans Outlook. Cela signifie-t-il qu'il n'y a pas d'autre solution pour contourner ce problème que de décocher ce paramètre ?

Merci

207voto

mtruesdell Points 1639

Je me suis battu avec ça aujourd'hui. Appelons le comportement consistant à supprimer les sauts de ligne supplémentaires "continuation". Une petite expérimentation permet de trouver le comportement suivant :

  • Chaque message commence par une continuation.
  • Les lignes de moins de 40 caractères ne déclenchent pas la poursuite, mais si la poursuite est activée, les sauts de ligne sont supprimés.
  • Les lignes de 40 caractères ou plus activent la poursuite. Elle reste active jusqu'à ce qu'un événement se produise pour la désactiver.
  • Les lignes qui se terminent par un point, un point d'interrogation, un point d'exclamation ou deux points désactivent la poursuite. (Outlook suppose qu'il s'agit de la fin d'une phrase ?)
  • Les lignes dont la poursuite est désactivée commencent par un saut de ligne, mais la poursuite est réactivée si elles comportent plus de 40 caractères.
  • Les lignes qui commencent ou se terminent par une tabulation désactivent la poursuite.
  • Les lignes qui commencent par 2 espaces ou plus désactivent la poursuite.
  • Les lignes qui se terminent par 3 espaces ou plus désactivent la poursuite.

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

6 votes

Très bonne réponse. Surtout le fait que 3 espaces à la fin arrêtent les perspectives est bon à savoir (et ne se trouve pas dans beaucoup d'endroits sur internet).

6 votes

C'est la réponse qui devrait s'afficher automatiquement comme écran de démarrage lors de l'ouverture d'Outlook.

4 votes

Pourquoi cela n'est-il documenté nulle part ? C'est un élément d'information très utile à avoir. Merci d'avoir fait cette recherche !

29voto

stephg Points 151

Vous pouvez forcer un saut de ligne dans outlook en attachant 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 sur Outlook 2010. Veuillez tester si cela fonctionne sur d'autres versions.

Voir aussi Outlook nettoie automatiquement mes sauts de ligne et bousille le format de mon courrier électronique

0 votes

Merci beaucoup. Selon votre conseil, j'utilise " \t " + Environment.NewLine pour commencer chaque nouvelle ligne. Cela fonctionne au moins pour Outlook 2013 que j'utilise.

29voto

Robert Wilkinson Points 570

Vous devez utiliser \r\n comme solution.

25 votes

Bien que cela puisse aider à terminer simplement une ligne dans \r\n ne garantit pas qu'Outlook conserve le saut de ligne.

5 votes

Si le type de message est du texte \html utilisez <p/>

0 votes

Pour text/html, j'ai tout essayé <br>, <br />, /n, /r/n.... Toujours incapable d'obtenir une nouvelle ligne dans ma messagerie Outlook

24voto

user60849 Points 161

Microsoft Outlook 2002 et versions ultérieures suppriment par défaut les "sauts de ligne supplémentaires" des messages texte. (kb308319) . En d'autres termes, Outlook semble tout 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 des problèmes si vous essayez d'écrire un code qui génère automatiquement un message électronique destiné à être lu par une personne utilisant Outlook.

Par exemple, supposons que vous souhaitiez fournir des informations distinctes, chacune sur des lignes séparées pour plus de clarté, comme ceci :

La transaction a besoin d'attention !
Date d'affichage : 1/30/2009
Montant : $12,222.06
TransID : 8gk288g229g2kg89
Code postal : 91543

Votre destinataire Outlook verra les informations regroupées, comme suit :

La transaction a besoin d'attention ! Date d'enregistrement : 1/30/2009 Montant : 12 222,06 $ TransID : 8gk288g229g2kg89 ZipCode : 91543

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

  1. Vous pouvez fournir deux des jeux de sauts de ligne entre chaque ligne. Cela empêche Outlook de combiner les lignes sur une seule ligne, mais il affiche alors une ligne blanche supplémentaire entre chaque ligne (créant le problème inverse). Par "fournir deux jeux de retours à la ligne", je veux dire que vous devriez utiliser " \r\n\r\n " 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, car l'utilisateur peut prévisualiser le texte dans une fenêtre Outlook très étroite qui enroule la fin de chaque ligne jusqu'à la première position de la ligne suivante, où elle ne sera pas alignée avec vos lignes à deux espaces. Cette stratégie est utilisée depuis quelques bulletins d'information .
  3. Vous pouvez renoncer à utiliser un format de texte brut et utiliser un format html.

0 votes

A choisi l'alternative 3, abandonnant le texte brut et utilisant le format html avec <br> .

10voto

Mark Points 61

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X