Auteur Sujet: Imap_8bit, Chunck_split Ajoute Un \r  (Lu 813 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne mrechte

  • Débutant
  • *
  • Messages: 14
Imap_8bit, Chunck_split Ajoute Un \r
« le: 17 février 2004 à 18:13:00 »
Bonjour,

Ces fonctions permettent de casser des lignes en longuer de 76 caractères pour les envoyer ensuite par e-mail (MIME). Chaque ligne coupée doit être automatiquement terminée par un \r\n. Curieusement les lignes que j'obtiens en utilisant ces fonctions se terminent par \r\r\n ce qui pose un problème à la réception du message dans le MUA (Mozilla).

Remarques:
1) J'ai constaté cela à la réception de l'e-mail envoyé par la fonction mail()
2) J'ai rencontré le même problème avec proxad sur la fonction chunk_split (imap est désactivé chez eux)

Merci pour votre aide.

Hors ligne mrechte

  • Débutant
  • *
  • Messages: 14
Imap_8bit, Chunck_split Ajoute Un \r
« Réponse #1 le: 17 février 2004 à 19:38:15 »
Test complémentaires: ce ne sont pas ces fonctions qui ajoutent le \r. Soit c'est la fonction mail() ou soit c'est au cours du transport du message.  

J'ai essayé d'envoyer un mail sur le domaine phpnet.org, donc je suppose que le message ne sort pas du réseau phpnet: le problème persiste (je récupère le message par pop).

J'ai levé le doute de Mozilla: Outlook produit le même résultat.

Chez moi quand je teste en local, je n'ai pas de problème. Mon MTA est postfix. Pourrait-il y avoir un problème avec d'autres MTA (qmail) ?

Hors ligne mrechte

  • Débutant
  • *
  • Messages: 14
Imap_8bit, Chunck_split Ajoute Un \r
« Réponse #2 le: 18 février 2004 à 13:49:37 »
Sous UNIX une ligne d'un fichier texte se termine par LF et non CRLF. Lorsque on prépare un message MIME sur une telle machine, les lignes du message sont terminées par LF. On utilise ensuite la fonction mail (par exemple en php) qui appelle la fonction système mail du MTA (par exemple postfix). Cette fonction "enveloppe" le message en interprétant chaque LF comme une fin de ligne, les supprime du message original et insère ses marques de début de ligne (par exemple N<longeur de la ligne>, cf. dropmail). A ce stade il ne devrait y avoir aucun LF dans le message enveloppé. Si le message contient des CR à son envoi par la fonction mail (par exemple si on a utilisé imap_8bit pour coder une pièce jointe), il y a un problème, en effet ces caractères ne font pas partie des caractères autorisés pour l'envoie de message par SMTP (on les voit restant tels quels en analysant un message enveloppé dans le dropmail). Certains MTA comme postfix les laissent passer tels quel dans le message. Au transport du message (ou la reconstitution du message ?) par les MTA on va se retrouver avec une séquence CRCRLF, le premier CR étant celui passé dans le message, le deuxième étant le fin de ligne (CRLF). Lors de la livraison dans la boîte finale utilisateur, le CRLF de fin devient LF sur plateforme LINUX. Donc on se retrouve avec CRLF dans la mailbox Linux ! Curieusement en utilisant POP pour récupérer un tel message sur Windows stocké sur Linux, tout rentre dans l'ordre (les LF se transforment en CRLF et les CRLF restent en CRLF) !!!
Moralité: pas de CRLF pour les fin de lignes, uniquement des LF (que ce soit dans le header ou le corps) des messages générés sur Linux (en particulier par php). Comprendo ?

Hors ligne maverick78

  • VIP
  • *****
  • Messages: 2 601
    • http://www.clan-ck.com
Imap_8bit, Chunck_split Ajoute Un \r
« Réponse #3 le: 18 février 2004 à 14:02:25 »
moralite : mets juste \n et il ajoute tout seule le \r ^_^
La force est dans la céréale
Clan cereal-killer : http://www.clan-ck.com

Ne te demande pas ce que ton pays peut faire pour toi mais plutôt ce que tu peux faire pour ton pays...(JF Kennedy)