Pourquoi, dans certaines conditions, un e-mail envoyé avec IDSMTP ne passe pas correctement à la nouvelle ligne?

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

  •  29-10-2019
  •  | 
  •  

Question

J'envoie un texte uniquement en utilisant TIdMessage et TIdSMTP.

Pour le Body J'utilise une chaîne concaténée simple comme

Body := SomeText + #13#10 +
          SomeOtherText + #13#10 +
          SomeMoreText + #13#10 +
          FinalText;

Quoi qu'il en soit, dans l'e-mail généré, certains "#13#10"ne sont pas ignorés. Je enregistre le Body Variable et je peux voir que le texte va à une nouvelle ligne, de toute façon dans l'e-mail, cela ne se produit pas. Ce qui est étrange, c'est que cela ne se produit pas sur chaque ligne mais seulement sur certaines lignes.

Avez-vous une idée de la raison pour laquelle cela se produit? Pouvez-vous suggérer quelque chose à vérifier? Y a-t-il un certain confort entre #13#10 Et un corps de messagerie texte dans certaines conditions?

METTRE À JOUR

Après plus d'enquête (grâce à vos commentaires), j'ai réalisé que c'était un problème de visualisation Outlook, de toute façon le problème n'est toujours pas clair pour moi.

Ceci est le corps de l'e-mail ouvert dans Notepad ++ (j'ai ouvert le fichier MSG enregistré d'Outlook) où j'affiche également des pauses de ligne (vous pouvez voir # 13 # 10 en tant que cr LF. problématique dans Outlook (mais vous pouvez voir que dans NP ++, ils ressemblent à tous les autres brise-ligne):Email body in NotePad++

L'e-mail dans Outlook ressemble à ceci (veuillez noter que Outlook dit que le message a des ruptures de ligne supplémentaires et qu'ils ont été supprimés, mais il offre une option pour les restaurer:EMail in Outlook displayin bad]

Après avoir choisi cette option, l'e-mail est OK:enter image description here

Je ne comprends pas pourquoi cela ne se produit que sur certaines pauses en ligne. Cela vous aide-t-il à mieux comprendre le problème?

Était-ce utile?

La solution

Vous pouvez essayer d'utiliser IdMessage.NoEncode := True pour que le corps ne soit pas RCF 821 encodé.

Ou mieux utiliser le codage moderne IdMessage.ContentType := 'text/html' et remplacer #13#10 avec <br>

ÉDITER:Il s'agit d'un problème Outlook Express.

Voir Ici et Ici. Une solution de contournement serait d'ajouter 2 caractères vides au début de chaque ligne de texte afin de faire en sorte que Outlook ne supprime pas les pauses.


Notez que le support Microsoft suggère également d'utiliser le format HTML comme solution de contournement possible avec Outlook Express:

Méthode 2. Utilisez le format de texte HTML ou richeVous pouvez utiliser des formats de texte HTML ou riches lorsque vous créez de nouveaux éléments. Ou vous pouvez modifier les messages existants en ces formats.

Autres conseils

Il peut s'agir du client de messagerie supprimant certaines pauses de ligne, si votre contenu est en texte brut.

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