pb MIME (email) suite à une migration d'hébergement mutualisé vers dédié (OVH)

Petit nouveau ! | 3 Messages

17 avr. 2009, 15:31

Bonjour,

j'ai chez OVH :

- un hébergement mutualisé 90plan,
- deux héberbements dédiés mini Superplan (Gentoo - OVH release2),

sur ces trois serveurs tourne une même application PHP qui peut envoyer des emails avec la fonction PHP mail(), avec signature graphique et pièce jointe (PDF)

le problème :
=> avec envoi par le serveur mutualisé les emails arrivent correctement dans Thunderbird, Outlook, Outlook-Express,
=> avec envoi par un des serveurs dédiés, les emails n'arrivent proprement que dans Thunderbird, les fichiers attachés n'arrivent pas proprement dans Outlook et Outlook-Express,


les configurations PHP des serveurs peuvent être lues à ces adresses :
=> mutualisé : http://90plan.ovh.net/test.php
=> dédié : http://ns367247.ovh.net/test.php


complément d'information :

code source d'un même email envoyé par chaque serveur (mutualisé & dédié),
par script PHP strictement identique sur le serveur mutualisé et sur un des deux serveur dédié,

la seule différence que j'ai pu constaté entre les deux codes sources des emails,
est que les lignes suivantes ne sont pas au même endroit :

Code : Tout sélectionner

Message-Id: <[email protected]> Date: Thu, 16 Apr 2009 14:30:09 +0200 (CEST)
ces lignes sont avant la première déclaration de "boundary" avec envoi par le serveur dédié,
et après la première déclaration de "boundary" avec envoi par le serveur mutualisé,
il me semble que c'est plus propre avant la première déclaration de "boundary" (serveur dédié),

code source des emails :

=====code source email serveur mutualisé

Code : Tout sélectionner

From - Thu Apr 16 14:30:34 2009 X-Account-Key: account2 X-UIDL: 1239885010.32697.mrelay2-g25 X-Mozilla-Status: 0000 X-Mozilla-Status2: 00000000 X-Mozilla-Keys: Return-Path: <bounce-id=D106=U9885.90plan.ovh.net=1239885007347159371@49.mail-out.ovh.net> Delivered-To: [email protected] Received: (qmail 32682 invoked from network); 16 Apr 2009 12:30:10 -0000 Received: from 213.251.143.20 (HELO 49.mail-out.ovh.net) (213.251.143.20) by mrelay2-g25.free.fr with SMTP; 16 Apr 2009 12:30:10 -0000 Received: (qmail 16067 invoked by uid 0); 16 Apr 2009 12:30:08 -0000 Received: from gw1.ovh.net (HELO 90plan.ovh.net) (213.251.189.201) by 49.mail-out.ovh.net with SMTP; 16 Apr 2009 12:30:07 -0000 Received: by 90plan.ovh.net (Postfix, from userid 9885) id E5703138FF; Thu, 16 Apr 2009 14:30:09 +0200 (CEST) To: [email protected] Subject: depuis mutualisé test 14h29 - Mission : 8030, roadshow Magister²²Georg Stumpf, 01/01-2009 - 12h30, Version : 7 Reply-To: [email protected] From: [email protected] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="ceci_est_ma_frontiere_perso_#1_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321" Message-Id: <[email protected]> Date: Thu, 16 Apr 2009 14:30:09 +0200 (CEST) This is a multi-part message in MIME format. --ceci_est_ma_frontiere_perso_#1_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type: multipart/alternative; boundary="ceci_est_ma_frontiere_perso_#2_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321" --ceci_est_ma_frontiere_perso_#2_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Version : 7 --ceci_est_ma_frontiere_perso_#2_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type: multipart/related; boundary="ceci_est_ma_frontiere_perso_#3_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321" --ceci_est_ma_frontiere_perso_#3_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 8bit <html><body> <span style="font-family:arial;font-size:12;">Version : 7</span> <br> <br><img src="cid:signature"> </body></html> --ceci_est_ma_frontiere_perso_#3_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type: image/jpeg; name="signature.jpg" Content-Transfer-Encoding: base64 Content-ID: <signature> /9j/4AAQSkZJRgABAgEASABIAAD/4REWRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA etc. code de l'image de signature 6vV//9k= --ceci_est_ma_frontiere_perso_#3_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321-- --ceci_est_ma_frontiere_perso_#2_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321-- --ceci_est_ma_frontiere_perso_#1_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type: application/pdf; name=mission_8030.pdf Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=mission_8030.pdf JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAy etc. code du PDF en pièce jointe UgovSW5mbyAxMCAwIFIKPj4Kc3RhcnR4cmVmCjE5ODQwCiUlRU9GCg== --ceci_est_ma_frontiere_perso_#1_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321--

=====code source email serveur dédié

Code : Tout sélectionner

From - Thu Apr 16 14:30:33 2009 X-Account-Key: account2 X-UIDL: 1239885006.20166.mrelay6-g25 X-Mozilla-Status: 0000 X-Mozilla-Status2: 00000000 X-Mozilla-Keys: Return-Path: <[email protected]> Delivered-To: [email protected] Received: (qmail 20155 invoked from network); 16 Apr 2009 12:30:06 -0000 Received: from 94.23.38.222 (HELO ns368899.ovh.net) (94.23.38.222) by mrelay6-g25.free.fr with SMTP; 16 Apr 2009 12:30:06 -0000 Received: (qmail 27360 invoked by uid 1000); 16 Apr 2009 12:30:23 -0000 Date: 16 Apr 2009 12:30:23 -0000 Message-ID: <[email protected]> To: [email protected] Subject: depuis dédié 2 test 14h29 - Mission : 8030, roadshow Magister²²Georg Stumpf, 01/01-2009 - 12h30, Version : 7 Reply-To: [email protected] From: [email protected] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="ceci_est_ma_frontiere_perso_#1_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321" This is a multi-part message in MIME format. --ceci_est_ma_frontiere_perso_#1_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type: multipart/alternative; boundary="ceci_est_ma_frontiere_perso_#2_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321" --ceci_est_ma_frontiere_perso_#2_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Version : 7 --ceci_est_ma_frontiere_perso_#2_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type: multipart/related; boundary="ceci_est_ma_frontiere_perso_#3_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321" --ceci_est_ma_frontiere_perso_#3_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 8bit <html><body> <span style="font-family:arial;font-size:12;">Version : 7</span> <br> <br><img src="cid:signature"> </body></html> --ceci_est_ma_frontiere_perso_#3_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type : image/jpeg; name="signature.jpg" Content-Transfer-Encoding : base64 Content-ID : <signature> /9j/4AAQSkZJRgABAgEASABIAAD/4REWRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA etc. code de l'image de signature 6vV//9k= --ceci_est_ma_frontiere_perso_#3_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321-- --ceci_est_ma_frontiere_perso_#2_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321-- --ceci_est_ma_frontiere_perso_#1_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321 Content-Type : application/pdf; name=mission_8030.pdf Content-Transfer-Encoding : base64 Content-Disposition : attachment; filename=mission_8030.pdf JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAy etc. code du PDF en pièce jointe b290IDExIDAgUgovSW5mbyAxMCAwIFIKPj4Kc3RhcnR4cmVmCjE5ODQ5CiUlRU9GCg== --ceci_est_ma_frontiere_perso_#1_dont_le_contenu_ne_devrait_jamais_ressembler_a_quelque_chose_dautre_dans_lemail_123-321--

ViPHP
ViPHP | 5924 Messages

17 avr. 2009, 19:20

Chouette, un problème détaillé. :D

Alors j'ai fait un diff sur les deux versions.
Hormis les différences dûe au transit du mail, il y en a une majeure (bien que d'un caractère :) ) :

Code : Tout sélectionner

< Content-Type : image/jpeg; --- > Content-Type: image/jpeg;

Code : Tout sélectionner

< Content-Transfer-Encoding : base64 < Content-ID : <signature> --- > Content-Transfer-Encoding: base64 > Content-ID: <signature>

Code : Tout sélectionner

< Content-Type : application/pdf; name=mission_8030.pdf < Content-Transfer-Encoding : base64 < Content-Disposition : attachment; filename=mission_8030.pdf --- > Content-Type: application/pdf; name=mission_8030.pdf > Content-Transfer-Encoding: base64 > Content-Disposition: attachment; filename=mission_8030.pdf
Après un saut sur les RFC, apparement l'écriture "Champ :" n'est pas correcte, c'est "Champ:" qui est correct.
Alors, on va commencer par pourquoi est ce que ça marche sous Thunderbird et non sous Outlook. Il faut savoir que bien que les RFC soient considérées comme des standards, chaque client mail a sa propre implémentation, plus ou moins laxiste. Cela explique pourquoi Outlook, qui doit avoir une interprétation stricte, ne reconnaît pas les mails, alors que Thunderbird, qui apparement est plus laxiste, le reconnaît.
Ensuite, pourquoi est ce que cela marche sur le mutualisé et non le dédié. Là aussi, chaque serveur mail implémente les standards à sa façon. Et certains vont reconnaître l'erreur et la prendre en compte, d'autres ne vont pas trouver l'erreur. Cela explique aussi peut être (mais je le connais pas assez la norme pour l'attester) la différence de placement du Message-ID et de la Date. A savoir que si le serveur reconnaît le mail multipart, il peut placer ces informations au bon endroit.

Je pense donc que dans ton code tu as mis les champs sous cette forme :

Code : Tout sélectionner

Champ : Valeur
Je te suggère de corriger en :

Code : Tout sélectionner

Champ: Valeur
Voilà :)

Petit nouveau ! | 3 Messages

18 avr. 2009, 15:36

Bonjour Sékiltoyai,

et mille merci, il semblerait bien que tu ais trouvé mon problème !,

tout d'abord, => "Chouette, un problème détaillé.",
et oui, je ne connais pas tout sur tout, mais malgré tout informaticien, donc, un problème exposé au mieux,

j'avais déjà noté ce détail, mais j'ai tellement trituré ces fichiers dans tous les sens, que j'en ai oublié cette vérif sur la dernière version mise en ligne,

effectivement, comme tu le dis, pour une fois, c'est MS qui est dans son bon droit !, c'est suffisamment rare pour le souligner,

par contre, pourrais-tu m'indiquer ta méthode de vérification des RFC ?,
as-tu utilisé google, ou bien sais tu à quel endroit il faut se rendre exactement ?,
je ne sais pas encore me servir de ces sites là,
je ne sais pas les trouver, et qu'en j'en trouve, je ne sais pas exploiter le contenu tellement il est riche,

en tout cas, encore merci, je ne voyais pas comment m'en sortir,
je vais maintenant pouvoir corriger mes autres scripts d'envoi d'email,

ha tient, pendant que je tiens un spécialiste,
j'ai analysé le code source d'un email envoyé par Outlook Express,
et j'ai vu qu'il écrivait un code que je n'ai pas pu interpréter et pour pour lequel je n'ai rien trouvé d'explicite sur le net,
regarde le code qui suit, tu y verras le code "3D" inséré un peu curieusement dans le code de la partie HTMl, sais tu de quoi il s'agit,
mais, même sans ce codage particulier, les emails sont maintenant propre dans les 3 clients cités,

Code : Tout sélectionner

<META http-equiv=3DContent-Type content=3D"text/html; = charset=3Diso-8859-1"> <META content=3D"MSHTML 6.00.6000.16825" name=3DGENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=3D#ffffff> <DIV><FONT face=3DArial size=3D2>aaa<IMG alt=3D"" hspace=3D0=20 src=3D"cid:DF14BA90D7EA4806B3C300CB116F41EF@inspiron86" align=3Dbaseline = border=3D0></FONT></DIV></BODY></HTML>
encore merci, à+ ...
Nils.

ViPHP
ViPHP | 5924 Messages

18 avr. 2009, 17:03

tout d'abord, => "Chouette, un problème détaillé.",
et oui, je ne connais pas tout sur tout, mais malgré tout informaticien, donc, un problème exposé au mieux,
Si tout le monde pouvait résumer comme toi…
j'avais déjà noté ce détail, mais j'ai tellement trituré ces fichiers dans tous les sens, que j'en ai oublié cette vérif sur la dernière version mise en ligne,
Avec un peu d'expérience, on repère rapidement les détails qui importent :)
effectivement, comme tu le dis, pour une fois, c'est MS qui est dans son bon droit !, c'est suffisamment rare pour le souligner,
Ne faisons pas d'anti-Microsoftisme de base. Il n'y a pas de bon droit, c'est une question de choix technique. Etre laxiste ou strict c'est juste question de politique.
Et puis il y a aussi quelques bons produits chez Microsoft. :)
par contre, pourrais-tu m'indiquer ta méthode de vérification des RFC ?,
as-tu utilisé google, ou bien sais tu à quel endroit il faut se rendre exactement ?,
je ne sais pas encore me servir de ces sites là,
je ne sais pas les trouver, et qu'en j'en trouve, je ne sais pas exploiter le contenu tellement il est riche,
Bah RFC dans google. Ou bien tu vas sur Wikipedia sur l'article du sujet qui t'intéresse, quasiment systématiquement tu trouveras les RFC dans les sources. Ou encore tu vas directement sur le site de l'IETF (organisme qui gère les groupes d'écritures des RFC).
en tout cas, encore merci, je ne voyais pas comment m'en sortir,
je vais maintenant pouvoir corriger mes autres scripts d'envoi d'email,
De rien.
ha tient, pendant que je tiens un spécialiste,
j'ai analysé le code source d'un email envoyé par Outlook Express,
et j'ai vu qu'il écrivait un code que je n'ai pas pu interpréter et pour pour lequel je n'ai rien trouvé d'explicite sur le net,
regarde le code qui suit, tu y verras le code "3D" inséré un peu curieusement dans le code de la partie HTMl, sais tu de quoi il s'agit,
mais, même sans ce codage particulier, les emails sont maintenant propre dans les 3 clients cités,

Code : Tout sélectionner

<META http-equiv=3DContent-Type content=3D"text/html; = charset=3Diso-8859-1"> <META content=3D"MSHTML 6.00.6000.16825" name=3DGENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=3D#ffffff> <DIV><FONT face=3DArial size=3D2>aaa<IMG alt=3D"" hspace=3D0=20 src=3D"cid:DF14BA90D7EA4806B3C300CB116F41EF@inspiron86" align=3Dbaseline = border=3D0></FONT></DIV></BODY></HTML>
Euh, le problème c'est que ça n'a aucun rapport. C'est purement un problème HTML. Certains logiciels Microsoft miteux généraient autrefois du code source HTML immonde, à base de <font> et d'attributs propriétaires. On peut supposer que c'est un héritage. Mais je n'ai aucune idée de ce que cela peut vouloir dire (d'autant plus que je suis vraiment mauvais en HTML…)

Petit nouveau ! | 3 Messages

19 mai 2009, 14:09

Salut Sékiltoyai,

un petit mot pour te dire que maintenant les scripts corrigés tournent depuis quelques semaines,

et il semblerait bien que tu ais trouvé mon problème,
plus de retour de la part des utilisateurs,

encore mille merci.
Nils.

ViPHP
ViPHP | 5924 Messages

19 mai 2009, 18:21

De rien, content que ce soit résolu.