Problème d'envoi par mail

Eléphant du PHP | 216 Messages

08 mars 2006, 00:22

Bonsoir à tous!
J'utilise un script php qui génère une variable contenant tout le code html devant être envoyé par mail.

Or j'ai des petits soucis avec ce mail. Quand j'utilise
  $headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
le mail part effectivement en html, mais il y a un souci d'affichage des tableaux, dont je donne le code source de ce mail tel qu'il arrive dans la boite aux lettres
<html>
<head>
<title>Page de fin de commande</title>
</head>

<body bgcolor="ccffff">
<p></p>
<p><font size="4">Merci d avoir commandé sur le site de xxxxxx. Cet email récapitule le détail de votre commande.</font></p>
<p><i><font size="4">&nbsp;&nbsp;&nbsp; <span style="background-color: #FFFF00">Commande N°: 0032</span></font></i></p>
<p><i><font size="4">&nbsp;&nbsp;&nbsp; <span style="background-color: #FFFF00">Votre identité:</span></font></i></p>

<table>
<tr bgcolor="ccffcc">
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="16%" height="100%" valign="middle"><p align="center"><font size="3"><b>Nom</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Prénom</b></font></td>
<td width="26%" height="100%" valign="middle"><p align="center"><font size="3"><b>Adresse</b></font></td>
<td width="20%" height="100%" valign="middle"><p align="center"><font size="3"><b>Téléphone</b></font></td>
<td width="20%" height="100%" valign="middle"><p align="center"><font size="3"><b>Mail</b></font></td>
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>

<tr bgcolor="f1f0ff">
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="16%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">DUPOND</span></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">Gérard</span></font></td>
<td width="26%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">10 rue qui n existe pas<br />
75000 PARIS<p></p>France</span></font></td>
<td width="20%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">12.34.56.78.90</span></font></td>
<td width="20%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">[email protected]</span></font></td><td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>

ICI IL MANQUE LE       /TR         /TABLE          MIS ENTRE BALISES

<p><i><font size="4">&nbsp;&nbsp;&nbsp; <span style="background-color: #FFFF00">Votre commande:</span></font></i></p>

<table>
<tr bgcolor="ccffcc">
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="12%" height="100%" valign="middle"><p align="center"><font size="3"><b>Aperçu</b></font></td>
<td width="8%" height="100%" valign="middle"><p align="center"><font size="3"><b>Type</b></font></td>
<td width="16%" height="100%" valign="middle"><p align="center"><font size="3"><b>Titre</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Année</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Prix unitaire</b></font></td>
<td width="8%" height="100%" valign="middle"><p align="center"><font size="3"><b>Nombre</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Prix</b></font></td>
<td width="22%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>

<tr bgcolor="ffffcc">
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="12%" height="100%" valign="middle"><p align="center"><img border="0" src="http://xxxxxx/Images/xxx.gif" width="120"></td>
<td width="8%" height="100%" valign="middle"><p align="center">CD</td>
<td width="16%" height="100%" valign="middle"><p align="center">xxxxxx</td><td width="10%" height="100%" valign="middle"><p align="center">2000</td>
<td width="10%" height="100%" valign="middle"><p align="center">6€</td>
<td width="8%" height="100%" valign="middle"><p align="center"><span style="background-color: #99FF99">2</span></td>
<td width="10%" height="100%" valign="middle"><p align="center"><span style="background-color: #99FF99">12€</span></td>
<td width="22%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>
</table>

<p align="center"><span style="background-color: #99FF99">12</span><font size="3"><b> articles<p></p>
Sous total articles avant remise: </b></font><span style="background-color: #99FF99">120€</span>
<p></p><p align="center"><b>Remise 10%: </b><span style="background-color: #99FF99">120€</span><p>
</p><p align="center"><font size="3"><b>Poids total envoi: </b></font><span style="background-color: #99FF99">680g</span>

<p align="left"><i><font size="4">&nbsp;&nbsp;&nbsp; <span style="background-color: #FFFF00">Choix de l
 envoi:</span></font></i></p>

<table>
<tr bgcolor="ccffcc">
<td width="6%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="12%" height="100%" valign="middle"><p align="center"><font size="3"><b>Type</b></font></td>
<td width="8%" height="100%" valign="middle"><p align="center"><font size="3"><b>Port</b></font></td>
<td width="16%" height="100%" valign="middle"><p align="center"><font size="3"><b>Recommandation</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Accusé de réception</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Total port</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Total marchandises</b></font></td>
<td width="14%" height="100%" valign="middle"><p align="center"><font size="3"><b>Total à payer</b></font></td>
<td width="14%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>

<tr bgcolor="e2e2e2">
<td width="6%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="12%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">Lettre service rapide</span></font></td>
<td width="8%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">3.62€</span></font></td>
<td width="16%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">Sans</span></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">Sans</span></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">3.62€</span></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">108€</span></font></td>
<td width="14%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">111.62€</span></font></td>
<td width="14%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>
</table>

</tr></table>Ca c est curieux mais je sais d où ça vient et si j enlève la ligne de code qui y correspond ça ne change rien

<p></p><font size="4">xxxxxxxxx vous remercie de votre confiance. Votre commande sera expédiée dans les plus brefs délais. A bientôt sur notre site!</font><p></p><p align="center"><a href="http://xxxxxx" target="_self">Aller sur le site de xxxxxxx</a>

</body>
</html>
Il manque donc des balises </tr></table>

Par contre si j'envoie le mail en brut, c'est à dire sans les header, j'obtiens ceci dont la présentation est bonne:
<html>
<head>
<title>Page de fin de commande</title>
</head>

<body bgcolor="ccffff">
<p></p><p><font size="4">Merci d avoir commandé sur le site de xxxxx. Cet email récapitule le détail de votre commande.</font></p>
<p><i><font size="4">&nbsp;&nbsp;&nbsp; <span style="background-color: #FFFF00">Commande N°: 0031</span></font></i></p>
<p><i><font size="4">&nbsp;&nbsp;&nbsp; <span style="background-color: #FFFF00">Votre identité:</span></font></i></p>

<table>
<tr bgcolor="ccffcc">
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="16%" height="100%" valign="middle"><p align="center"><font size="3"><b>Nom</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Prénom</b></font></td>
<td width="26%" height="100%" valign="middle"><p align="center"><font size="3"><b>Adresse</b></font></td>
<td width="20%" height="100%" valign="middle"><p align="center"><font size="3"><b>Téléphone</b></font></td>
<td width="20%" height="100%" valign="middle"><p align="center"><font size="3"><b>Mail</b></font></td>
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>

<tr bgcolor="f1f0ff">
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="16%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">DUPOND</span></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">Gérard</span></font></td>
<td width="26%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">10 rue qui n existe pas<br /> 75000 PARIS<p></p>France</span></font></td>
<td width="20%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">12.34.56.78.90</span></font></td>
<td width="20%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">[email protected]</span></font></td>
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>
</table>


ICI IL Y A BIEN LES           /TR                /TABLE             MIS ENTRE BALISES

<p><i><font size="4">&nbsp;&nbsp;&nbsp; <span style="background-color: #FFFF00">Votre commande:</span></font></i></p>

<table>
<tr bgcolor="ccffcc"><td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="12%" height="100%" valign="middle"><p align="center"><font size="3"><b>Aperçu</b></font></td>
<td width="8%" height="100%" valign="middle"><p align="center"><font size="3"><b>Type</b></font></td>
<td width="16%" height="100%" valign="middle"><p align="center"><font size="3"><b>Titre</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Année</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Prix unitaire</b></font></td>
<td width="8%" height="100%" valign="middle"><p align="center"><font size="3"><b>Nombre</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Prix</b></font></td>
<td width="22%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>

<tr bgcolor="ffffcc">
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="12%" height="100%" valign="middle"><p align="center"><img border="0" src="http://xxxxxxx/Images/xxxxxx.gif" width="120"></td>
<td width="8%" height="100%" valign="middle"><p align="center">CD</td>
<td width="16%" height="100%" valign="middle"><p align="center">xxxxxxxxxx</td>
<td width="10%" height="100%" valign="middle"><p align="center">2000</td>
<td width="10%" height="100%" valign="middle"><p align="center">6€</td>
<td width="8%" height="100%" valign="middle"><p align="center"><span style="background-color: #99FF99">2</span></td>
<td width="10%" height="100%" valign="middle"><p align="center"><span style="background-color: #99FF99">12€</span></td>
<td width="22%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>
</table>

<p align="center"><span style="background-color: #99FF99">12</span><font size="3"><b> articles<p>
</p>Sous total articles avant remise: </b></font><span style="background-color: #99FF99">120€</span>
<p></p><p align="center"><b>Remise 10%: </b><span style="background-color: #99FF99">120€</span><p>
</p><p align="center"><font size="3"><b>Poids total envoi: </b></font><span style="background-color: #99FF99">680g</span>
<p align="left"><i><font size="4">&nbsp;&nbsp;&nbsp; <span style="background-color: #FFFF00">Choix de l envoi:</span></font></i></p>

<table>
<tr bgcolor="ccffcc">
<td width="6%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="12%" height="100%" valign="middle"><p align="center"><font size="3"><b>Type</b></font></td>
<td width="8%" height="100%" valign="middle"><p align="center"><font size="3"><b>Port</b></font></td>
<td width="16%" height="100%" valign="middle"><p align="center"><font size="3"><b>Recommandation</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Accusé de réception</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Total port</b></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><b>Total marchandises</b></font></td>
<td width="14%" height="100%" valign="middle"><p align="center"><font size="3"><b>Total à payer</b></font></td>
<td width="14%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>

<tr bgcolor="e2e2e2">
<td width="6%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
<td width="12%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">Coliéco France</span></font></td>
<td width="8%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">5.1€</span></font></td>
<td width="16%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">Sans</span></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">Sans</span></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">5.1€</span></font></td>
<td width="10%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">108€</span></font></td>
<td width="14%" height="100%" valign="middle"><p align="center"><font size="3"><span style="background-color: #99FF99">113.1€</span></font></td>
<td width="14%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></td>
</tr>
</table>

</tr></table>

<p></p><font size="4">xxxxx vous remercie de votre confiance. Votre commande sera expédiée dans les plus brefs délais. A bientôt sur notre site!</font>
<p></p><p align="center"><a href="http://xxxx" target="_self">Aller sur le site de xxx</a>

</body>
</html>
Il y a donc construction de 3 tableaux.

Voilà, je ne sais pas quoi penser de ceci. Est ce que quelqu'un peut m'aider sur ce problème?
Merci.
Modifié en dernier par lord.anonymous le 08 mars 2006, 10:34, modifié 2 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 mars 2006, 01:40

Salut,

faudrait voir le code associé à la construction de la page, mais à vu d'oeil tu ne ferme pas les balises <p> ce qui peut provoquer des erreurs
exemple:
<td width="4%" height="100%" valign="middle" bgcolor="ccffff"><p align="center"></p></td>
en rouge manquant.

Et évite de balancer toutes ces lignes pour pas grand chose, de plus un code (HTML ou PHP ) est plus lisible entre [ php] :roll:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 216 Messages

08 mars 2006, 10:12

OK je ne savais pas pour le code PHP je vais éditer. Et essayer de réduire un peu tout ça c'est vrai que ce n'est pas formidable.

Pour le code, il reprend quasiment intégralement le code source de la page, qui s'affiche correctement.

Quand j'envoie le mail avec les headers, il y a problème.
Quand je l'envoie sans les headers je reçois le html brut (logique) et quand je colle ça dans un navigateur, pas de problème.

Autre question: est ce que ça ne pourrait pas être la balise </ br> qui gêne dans l'affichage du 1er tableau?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

08 mars 2006, 10:50

Modération :
Ce message n'aurait-il pas plus sa place dans une forum dédié au PHP ?... :-"
Hup hup hup... Barbatruc !

Eléphant du PHP | 216 Messages

08 mars 2006, 11:18

Je me suis posé la question mais je pense que le souci vient de l'interprétation du code HTML et non de la construction de ce code dans le script php. Donc c'est pour cela que je pose la question ici.

Si cela semble néanmoins nécessaire, déplacez ce topic dans la section dédiée...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 mars 2006, 11:40

Tu devrais virer les height="100%" de toutes tes cellules... si elles prennent toutes toute la hauteur du tableau ça risque de poser quelques soucis :)
D'une manière générale, mieux vaut laisser le navigateur gérer la hauteur en fonction du contenu, où si tu as vraiment besoin de la fixer, ne pas utiliser de % :)

pour les balises <p> c'est effectivement mieux de les fermer, mais ce n'est pas obligatoire (et là je vais me faire trucider par les adeptes du w3c :)) d'autant plus qu'ils sont dans des balises <td>.
Il serait plus lisible d'ailleurs je pense de les virer et de mettre le align="center" dans le tag <td> :)

Eléphant du PHP | 216 Messages

08 mars 2006, 12:17

Oui, ça ce sont de petits détails de finalisation. Mais la question est:

Est ce que un mail HTML interprète le code HTML de façon archi stricte, et que le moindre petit détail suffit à bloquer le code, ou bien est-ce que c'est comme un navigateur, qui laisse une certaine latitude dans le code?

Enfin, pourquoi est ce que ce n'est pas le même code qui est renvoyé (il manque un </tr></table> qui foire la mise en page) avec ou sans le header?
C'est surtout ça que je ne comprends pas.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 mars 2006, 12:38

Cela va dépendre du client de messagerie utilisé par le destinataire.. outlook, express, lotus, etc. n'auront pas tous la même latitude (tout comme deux navigateurs différents, voire deux versions différentes d'un même navigateur)

Pour la disparition des balises par contre, je ne vois pas d'explication...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

08 mars 2006, 12:56

essaie d'indenter ton code et de fermer toutes les balises ouvertes pour avoir un code un peu près correct ensuite fait un nouveau test :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 216 Messages

08 mars 2006, 14:45

Bon je vais nettoyer tout mon code cet après midi et je vous tiens au courant ce soir.

Eléphant du PHP | 216 Messages

08 mars 2006, 16:56

Bon, j'ai nettoyé le code et le message s'affiche correctement.
Conclusion: Outlook est plus pointilleux que Mozilla sur la propreté du code.