J'essaie d'envoyer un courrier électronique en Java, mais lorsque j'ai lu le corps du courrier électronique dans Outlook, il s'est débarrassé de tous mes sauts de ligne. Je mets\n au bout des lignes, mais y a-t-il quelque chose de spécial que je dois faire, à part ça? Les destinataires vont toujours utiliser Outlook.
J'ai trouvé une page sur Microsoft.com qui indique qu'il existe une "fonctionnalité" "Supprimer les 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
Vous devez utiliser \r\n
comme solution.
Je viens de me battre avec cela aujourd'hui. Appelons le comportement de suppression des sauts de ligne supplémentaires "continuation". Un peu d’expérimentation trouve le comportement suivant:
Veuillez noter que j'ai essayé tout cela avec Outlook 2007. YMMV.
Donc, si possible, terminez tous les éléments avec une marque de ponctuation, une tabulation ou même trois espaces.
Vous pouvez forcer un saut de ligne dans Outlook lorsque vous attachez un (ou deux?) Caractères (\ 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. Veuillez vérifier si cela fonctionne avec d'autres versions.
Voir aussi Outlook: nettoyage automatique de ma ligne et cassure du format de courrier électronique
Microsoft Outlook 2002 et versions ultérieures supprime les "sauts de ligne supplémentaires" des messages texte par défaut (kb308319) . En d'autres termes, 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 des problèmes 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 sur des lignes distinctes, par souci de clarté, comme ceci:
La transaction a besoin d'attention!
Date de publication: 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:
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é le saut de ligne HTML au lieu de "\ n". Cela a bien fonctionné.
L'ajout de "\ t\r\n" (\ t pour TAB) au lieu de "\ r\n" a fonctionné 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!
J'avais eu du mal 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 le formatage "text/html" dans ma bibliothèque de courrier électronique.
Donc, la solution à ce problème consiste à utiliser "text/plain", au lieu de "text/html" et ne nécessite aucun remplacement des caractères de retour:
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(message, "text/plain");
Etant donné qu’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,
<a href="mailto:[email protected]?Subject=TEST&amp;body=Hi there,%0A%0AHow are you?%0A%0AThanks">email to me</a>
Mettez le texte dans <pre>
Tags et Outlook formatera et affichera le texte correctement.
je l'ai défini dans CSS inline 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>
Pour Outlook 2010 et les versions ultérieures, utilisez\ t\nplutôt que\r\n.
L'astuce consiste à utiliser la fonctionnalité encodeURIComponent()
de js:
var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:[email protected]?body=" + encodeURIComponent(formattedBody);
RÉSULTAT:
FirstLine
SecondLine
ThirdLine
Vous devez envoyer des emails HTML. Avec <br />
s dans l'e-mail, vous aurez toujours vos sauts de ligne.
J'ai également eu ce problème avec le type de courrier brut/texte. Le fil de texte \f
a fonctionné pour moi.
Ceci doit être utile pour vous. essayez "% 0A" au lieu de "\ n". La vraie source est ici.
Vous devez ajouter "% 0A" à chaque fois que vous avez besoin d'une nouvelle ligne dans votre code. Dans ton cas
abcParameters.put(defConstants.REPORT_MESSAGE, "Invalid file sent by tt. Hence ffgghh was unable
to process it : " + s+ "%0A" +e.getMessage().toString());
si le message est text/plain,\r\n devrait fonctionner; si le type de message est text\html, utilisez < p/>
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.
si le travail doit être effectué avec du texte formaté sans codage HTML . il peut être facilement obtenu avec le scénario suivant qui crée un élément div à la volée et utilise un élément <pre></pre>
html pour conserver le formatage.
var email_body = htmlEncode($("#Body").val());
function htmlEncode(value) {
return "<pre>" + $('<div/>').text(value).html() + "</pre>";
}
Essaye ça:
message.setContent(new String(body.getBytes(), "iso-8859-1"),
"text/html; charset=\"iso-8859-1\"");
Cordialement, .__ Mohammad Rasool Javeed
RÉSOLU DANS MA DEMANDE
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 est entré
Yadav
Mahesh
Outlook l'a affiché comme
YadavMahesh
Résolution: J'ai changé le caractère de saut de ligne "\ r\n" avec "\ par" (n'oubliez pas de placer un espace à la fin du code RTF ""\par ") et les sauts de ligne sont restaurés.
À votre santé,
Mahesh
\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);
Si vous pouvez ajouter un '.' (point) à la fin de chaque ligne, cela semble empêcher Outlook de gâcher le formatage du texte.
J'ai une bonne solution que j'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)
J'ai également eu ce problème avec le type de courrier simple/texte. Auparavant, j’utilisais "\ n\n" mais il y avait 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é à la ligne suivante du courrier Outlook 2010.
Vous devez parfois entrer\r\n deux fois pour forcer Outlook à faire la pause.
Cela ajoutera une ligne vide mais toutes les lignes auront une pause.