Protocole SMTP/POP3, YAHOO mange les retours chariot !

ArthurAuguste Messages postés 107 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 17 février 2018 - 30 août 2013 à 07:59
ArthurAuguste Messages postés 107 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 17 février 2018 - 5 sept. 2013 à 18:01
Bonjour,
Je ne suis pas sûr que cette signalisation soit dans la bonne rubrique...
A partir d'une adresse mail sur wanadoo et par Outlook-Express j'envoie un même mail avec un fichier texte joint vers deux adresses:
une adresse mail sous voila.fr
une adresse mail sous yahoo.fr
mon message et mon fichier texte joint arrivent exactement identiques sur l'adresse voila.fr
mon message arrive identique sur l'adresse yahoo.fr (retours chariot conservés)
par contre mon fichier texte joint a perdu tous les retours chariot (0x0D) sur l'adresse yahoo.fr (les line-feed 0x0A sont conservés)

Il s'agit probablement d'un problème connu, y a-t-il une méthode à adopter pour que les fichiers textes joints arrivent toujours dans l'état où ils étaient au départ (sans perte d'information) quel que soit le destinataire ?

J'ai vérifié ce qui passe sur la ligne au départ (côté wanadoo) les 0x0D et 0x0A sont bien présents (ce qui n'est pas surprenant car il n'y aurait eu aucune raison pour que sous l'adresse voila les 0x0D soient rajoutés s'ils avaient été absents)

J'ai regardé le protocole utilisé par Outlook-Express, il me paraît correct:
Pour l'envoi du message, il utilise les paramètres SMTP:
Content-Type: text/plain; + charset="iso-8859-1" + Content-Transfer-Encoding: quoted-printable
Pour l'envoi du fichier texte joint, il utilise les paramètres SMTP:
Content-Type: text/plain; + Content-Transfer-Encoding: 7bit + Content-Disposition: attachment;

Il semblerait en outre que le problème ne soit pas lié aux paramètres de départ car j'ai essayé d'envoyer le même mail et fichier joint par un petit programme en C en utilisant pour le fichier joint les mêmes paramètres que ceux du message (charset="iso-8859-1" et sans Content-Transfer-Encoding: 7bit) et le phénomène est identique.
Tout à l'air de se passer comme si Yahoo tout seul prenait la décision de supprimer les 0x0D quels que soient les paramètres de départ sur les fichiers texte joints.


--

1 réponse

ArthurAuguste Messages postés 107 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 17 février 2018
5 sept. 2013 à 18:01
Entre-temps j'ai trouvé une parade à condition que j'envoie les mails avec mon programme en C.
Pour ceux que ça intéresse...
Explications:
Pour les fichiers joints Outlook-Express effectue systématiquement un transcodage (Content-Transfer-Encoding) de type: "quoted-printable", c'est à dire qu'il remplace tous les caractères qui sont sur plus de 7 bits par une représentation hexa-texte par exemple "=E0" pour 0xE0 en particulier pour tous les caractères accentués ainsi que quelques caractères 7 bits particuliers comme le caractère "=" en sa valeur texte-hexa "=3D" (pour 0x3D) pour ne pas prêter à confusion. Les caractères \r (0x0D) et \n (0x0A) qui sont sur 7 bits ne sont pas transcodés et sont envoyés tels quels ce qui n'a pas l'air de poser de problème chez Voila, Wanadoo, etc... par contre lorsque le fichier arrive chez Yahoo, Yahoo conserve les \n (0x0A) mais sucre tous les \r (0x0D).
Avec un programme en C, je rajoute donc le transcodage hexa-texte du \r (0x0D) en "=0D" et je laisse passer sans transcodage le \n à l'arrivée Yahoo rétablit correctement les \r et ça ne gêne pas les autres comptes (Voila, Wanadoo, etc...)
A noter que concernant le message lui-même et non plus le fichier joint , Outlook-Express l'envoie deux fois, une fois transcodé exactement de la même manière que ci-dessus et une deuxième fois avec un transcodage pas tout à fait identique mais au format HTML, le réceptionnaire a donc le choix de retranscoder soit le premier exemplaire du message, soit le second au format HTML, on peut donc sans se tromper supposer que Yahoo choisit le 2ème format (HTML) car le problème des pertes de \r ne se pose pas pour Yahoo pour les messages et justement dans le format HTML les \r\n sont naturellement remplacés par Outlook-Express par des <BR>
Cordialement,
Roger



--
0
Rejoignez-nous