Mise en page mail avec la fonction php mail

VincentVV -  
rescue Messages postés 1047 Statut Contributeur -
Bonjour,
Je rencontre un petit problème qui commence a bien me prendre la tête.
Alors, je vous l'expose car avec le peu de connaissance que j'ai je ne m'en sors pas et je perds beaucoup de temps pour le reste...

J'ai un formulaire de commande en *.html. Le formulairefait appel a un fichier *.php pour me l'envoyer sur mon mail.
Tout ça marche correctement :)

La où le bas blesse, c'est vu le nombre de champs envoyés sur mon mail, le mail que je reçois ne ressemble plus a rien et j'ai du mal a traiter les informations reçues.

Quelqu'un pourrait-il me prendre la main et m'aider à faire la mise en page. Ca fait quelques jours que je râle la dessus et c'est pour un site provisoire donc je me decourage car j'ai beaucoup d'autres choses à faire sur mon site original.

Voici le code de la page *.HTML
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Quadstyling - Comment commander</title>

<style type="text/css" media="all">
td {font-weight: bold; text-align: right;}
td.liste{text-align: left;}
th {font-size: 2em; color: red; padding: 0; border-bottom: 1px solid red;}
</style>
<style type="text/css" media="print">
div.nepasvoir p:first-line {font-weight: bold;}
tr#nepasimprimer {display: none;}
</style>
<style type="text/css" media="screen">
div.nepasvoir {display: none;}
td.info{border-left : 3px solid red; border-bottom: 1px solid red}
td.champ{border-right : 1px solid red;}
td {padding: 0.25em 1px;}
td.subject{border-left : 3px solid green; border-bottom: 1px solid green}
td.liste{ border-top: 1px dotted red; border-right: 1px solid green; border-bottom: 1px solid green;}
td.contenu{border-left : 3px solid gray; border-bottom: 1px solid gray}
td.contenant{border-right : 1px solid gray; border-bottom: 1px solid gray}
td.lesboutons{}
</style>

<script type="text/javascript" language="Javascript" >
<!--
function verification()
{
 if(document.formulaire.nom.value == "")  {
   alert("Veuillez entrer votre nom svp");
   document.formulaire.nom.focus();
   return false;
  }
   else
   
 if(document.formulaire.prenom.value == "") {
   alert("Veuillez entrer votre prenom svp");
   document.formulaire.prenom.focus();
   return false;
  }
   else
 if(document.formulaire.mail.value == "") {
   alert("Veuillez entrer votre adresse electronique svp");
   document.formulaire.mail.focus();
   return false;
  }
  else
 if(document.formulaire.mail.value.indexOf('@') == -1) {
   alert("Ce n'est pas une adresse electronique, verifiez la svp");
   document.formulaire.mail.focus();
   return false;
  }
   else
 if(document.formulaire.phone.value == "") {
   alert("Veuillez entrer votre numero de telephone svp");
   document.formulaire.phone.focus();
   return false;
  }
   else
 if(document.formulaire.marque.value == "") {
   alert("Veuillez entrer la marque de votre quad svp");
   document.formulaire.marque.focus();
   return false;
  }
   else
  if(document.formulaire.typeq.value == "") {
   alert("Veuillez entrer le type de quad svp");
   document.formulaire.typeq.focus();
   return false;
  }
   else
    if(document.formulaire.ruel.value == "") {
   alert("Veuillez entrer la rue de l'adresse de livraison svp");
   document.formulaire.ruel.focus();
   return false;
  }
   else
  if(document.formulaire.nl.value == "") {
   alert("Veuillez entrer le numero de l'adresse de livraison svp");
   document.formulaire.nl.focus();
   return false;
  }
   else
  if(document.formulaire.postcodel.value == "") {
   alert("Veuillez entrer le code postal de l'adresse de livraison svp");
   document.formulaire.postcodel.focus();
   return false;
  }
   else
  if(document.formulaire.communel.value == "") {
   alert("Veuillez entrer la commune de l'adresse de livraison svp");
   document.formulaire.communel.focus();
   return false;
  }
   else
  if(document.formulaire.paysl.value == "") {
   alert("Veuillez entrer le pays de l'adresse de livraison svp");
   document.formulaire.paysl.focus();
   return false;
  }
return true
}
//-->
</script>

</head>

<body background="http://www.xxxxxxx.be/Image/BackgroundHD.jpg">

<form method="POST" name="formulaire" action="//quadstylogue/traitement.php" onSubmit="return verification()">
<b><u>Informations personnelles<br>
  </u></b>
  <table border="1" width="72%">
    <tr>
      <td width="45%">
        <p align="left"><b>Nom:<input type="text" name="nom" size="36"></b></p>
      </td>
      <td width="55%" colspan="2">
        <p align="left"><b>Prénom: <input type="text" name="prenom" size="36"></b></p>
      </td>
    </tr>
    <tr>
      <td width="45%">
        <p align="left"><b>Adresse mail: <input type="text" name="mail" size="28"></b></td>
      <td width="38%"> </td>
      <td width="17%"> </td>
    </tr>
    <tr>
      <td width="45%">
        <p align="left"><b>Marque du quad: <input type="text" name="marque" size="20"></b></p>
      </td>
      <td width="38%">
        <p align="left"><b>Type du quad:<input type="text" name="typeq" size="20"></b></p>
      </td>
      <td width="17%"><b>Année: <input type="text" name="annee" size="7"></b></td>
    </tr>
    <tr>
      <td width="45%">
        <p align="left"><b>Adresse de livraison:<br>
        Rue: <input type="text" name="ruel" size="36"><br>
        N°: <input type="text" name="nl" size="6"> boite: <input type="text" name="boitel" size="5"><br>
        Code postale: <input type="text" name="postcodel" size="20"><br>
        Commune : <input type="text" name="communel" size="22"><br>
        Pays:<input type="text" name="paysl" size="20"></b></p>
      </td>
      <td width="55%" colspan="2">
        <p align="left"><b>Adresse de facturation:<br>
        Rue: <input type="text" name="ruef" size="36"><br>
        N°: <input type="text" name="nf" size="6"> boite: <input type="text" name="boitef" size="5"><br>
        Code postale: <input type="text" name="postcodef" size="20"><br>
        Commune : <input type="text" name="communef" size="22"><br>
        Pays:<input type="text" name="paysf" size="20"></b></p>
      </td>
    </tr>
    <tr>
      <td width="45%">
        <p align="left"><b>Téléphone fixe: <input type="text" name="phone" size="20"></b></p>
      </td>
      <td width="55%" colspan="2">
        <p align="left"><b>Téléphone mobile:<input type="text" name="mobile" size="20"></b></p>
      </td>
    </tr>
  </table><br>
  <b><u>Votre commande<br>
  </u></b>
  <table border="1" width="72%">
    <tr>
      <td width="52%">
        <p align="left"><b>Nom de l'article:</b></p>
      </td>
      <td width="21%">
        <p align="left"><b>Référence de l'article:</b></p>
      </td>
      <td width="14%">
        <p align="left"><b>couleur:</b></p>
      </td>
      <td width="13%">
        <p align="left"><b>Quantité</b></p>
      </td>
    </tr>
    <tr>
      <td width="52%"><input type="text" name="art1" size="50"></td>
      <td width="21%"><input type="text" name="ref1" size="20"></td>
      <td width="14%"><input type="text" name="color1" size="10"></td>
      <td width="13%"><input type="text" name="quantity1" size="11"></td>
    </tr>
    <tr>
      <td width="52%"><input type="text" name="art2" size="50"></td>
      <td width="21%"><input type="text" name="ref2" size="20"></td>
      <td width="14%"><input type="text" name="color2" size="10"></td>
      <td width="13%"><input type="text" name="quantity2" size="11"></td>
    </tr>
    <tr>
      <td width="52%"><input type="text" name="art3" size="50"></td>
      <td width="21%"><input type="text" name="ref3" size="20"></td>
      <td width="14%"><input type="text" name="color3" size="10"></td>
      <td width="13%"><input type="text" name="quantity3" size="11"></td>
    </tr>
    <tr>
      <td width="52%"><input type="text" name="art4" size="50"></td>
      <td width="21%"><input type="text" name="ref4" size="20"></td>
      <td width="14%"><input type="text" name="color4" size="10"></td>
      <td width="13%"><input type="text" name="quantity4" size="11"></td>
    </tr>
    <tr>
      <td width="52%"><input type="text" name="art5" size="50"></td>
      <td width="21%"><input type="text" name="ref5" size="20"></td>
      <td width="14%"><input type="text" name="color5" size="10"></td>
      <td width="13%"><input type="text" name="quantity5" size="11"></td>
    </tr>
    <tr>
      <td width="52%"><input type="text" name="art6" size="50"></td>
      <td width="21%"><input type="text" name="ref6" size="20"></td>
      <td width="14%"><input type="text" name="color6" size="10"></td>
      <td width="13%"><input type="text" name="quantity6" size="11"></td>
    </tr>
    <tr>
      <td width="52%"><input type="text" name="art7" size="50"></td>
      <td width="21%"><input type="text" name="ref7" size="20"></td>
      <td width="14%"><input type="text" name="color7" size="10"></td>
      <td width="13%"><input type="text" name="quantity7" size="11"></td>
    </tr>
    <tr>
      <td width="52%"><input type="text" name="art8" size="50"></td>
      <td width="21%"><input type="text" name="ref8" size="20"></td>
      <td width="14%"><input type="text" name="color8" size="10"></td>
      <td width="13%"><input type="text" name="quantity8" size="11"></td>
    </tr>
    <tr>
      <td width="52%"><input type="text" name="art9" size="50"></td>
      <td width="21%"><input type="text" name="ref9" size="20"></td>
      <td width="14%"><input type="text" name="color9" size="10"></td>
      <td width="13%"><input type="text" name="quantity9" size="11"></td>
    </tr>
    <tr>
      <td width="52%"><input type="text" name="art10" size="50"></td>
      <td width="21%"><input type="text" name="ref10" size="20"></td>
      <td width="14%"><input type="text" name="color10" size="10"></td>
      <td width="13%"><input type="text" name="quantity10" size="11"></td>
    </tr>
  </table>
  <table border="1" width="72%">
    <tr>
      <td width="100%" align="right"><b>Moyen de paiement: <select size="1" name="paiement">
          <option>Paypal</option>
          <option selected>Virement bancaire</option>
          <option>contre-remboursement</option>
        </select></b></td>
    </tr>
  </table>
  <p align="left"> <input type="reset" value="Reset" name="B2">                                                                                                                                       
  <input type="submit" value="Commander" name="command"></p>
</form>

</body>

</html>



Mon fichier *.php est traitement.php
<html>
<body>
<?php
$header.="MIME-Version: 1.0\r\n";   
$header.="Content-Type: text/html";
$header.= "X-Mailer: PHP ".phpversion()."n";
$adresse="info@quadstyling.be";
$from="From: $prenom $nom<$mail>\r\n";
$from.="Reply-To: $prenom $nom <$mail>\n";
$from.="X-priority:3\n";
$sujet.="Commande via www.quadstyling.be";
$texte.="
Détails client
		Nom: $nom                  							Prenom: $prenom
		Adresse mail: $mail											Mode de paiement: $paiement
		Phone: $phone
		Mobile: $mobile

Détails quad
		Marque quad: $marque
		Type Quad: $typeq
		Annee de construction: $annee \n

Adresse de livraison																				Adresse de facturation														
$ruel,$nl   boite $boitel																		$ruef,$nf   $boitef
$postcodel  	$communel																			$postcodef	$communef

La commande
Nom de l'article												Référence											Quantité
$art1																		$ref1													$quantity1
$art2																		$ref2													$quantity2
$art3																		$ref3													$quantity3
$art4																		$ref4													$quantity4
$art5																		$ref5													$quantity5
$art6																		$ref6													$quantity6
$art7																		$ref7													$quantity7
$art8																		$ref8													$quantity8
$art9																		$ref9													$quantity9
$art10																	$ref10												$quantity10";


if (mail($adresse,$sujet,$texte,$from,$header))
echo("<center><br><br>QuadStyling vous remercie</p> de votre visite,<br><br><br>un mail de confirmation vous sera envoyé après vérification et traitement de votre commande.<br><br><br><b><u>NOTRE NOUVELLE BOUTIQUE EN LIGNE VERRA LE JOUR EN JANVIER 2008</u></b><br><br><br><br>Les avantages de la nouvelle boutique:<li>Panier personnalisé <li>Possibilité de paiement en ligne <li>Nouveau classement des articles <li>Historique de commandes <li>Newsletter</li>");
	
else                              
echo("<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href=\"mailto:$adresse\">classiquement</a>");
?>
</html>
</body>



Voici le genre de mail que je reçois
Détails client
Nom: Van Vreckem                  Prenom: Vincent
Adresse mail: mail@test.be Mode de paiement: 
Phone: +322xx53066
Mobile: +324xx930429

Détails quad
Marque quad: Yamaha
Type Quad: Raptor 700
Annee de construction: 2007 


Adresse de livraison Adresse de facturation 
rue de livraison,31   boite rue de facturation,20   3
1420  Braine-l\'alleud 1420 Braine-l\'alleud

La commande
Nom de l'article Référence Quantité
art1 ref1 1


Problèmes dans la réception du mail:
- Problème de mise en page, j'aimerais recevoir les infos dans un tableau un peu comme le formulaire. Je devrais pouvoir renvoyer le mail au client pour qu'il ait une copie de sa commande

P.S., j'ai déjà beaucoup lu, on m'a déjà envoyé sur beaucoup de page mais je n'y arrive pas, j'ai vraiment besoin qu'on me tienne par la main ;)

D'avance, je vous remercie de votre aide qui me serait très précieuse.
Bien à vous
VincentVV
A voir également:

8 réponses

Christounet Messages postés 1266 Statut Membre 1 392
 
Bonjour,

Je ne suis pas un grand expert en PHP, mais peut-être en suivant le lien ci-dessous, tu trouveras un exemple très bien documenté, qui explique aussi comment envoyer un mail en format text et html car certains logiciels de courrier éléctronique ne gérent pas le format html:

Mail format HTML

A plus
1
Christounet Messages postés 1266 Statut Membre 1 392
 
Bonjour VincentVV

En suivant le lien ci-dessous, tu trouveras comment envoyer un mail avec la fonction mail de PHP en format HTML, ce qui devrait te permettre de mettre du code html dans le message du style <table> , <tr> et <td> pour avoir les informations sous forme de tableau:

PHP - Envoyer un mail

Cherche le chapitre Envoi de mails en HTML avec PHP

A plus
0
VincentVV
 
Merci pour le lien, il est relativement clair ;)

Je vai scommencer par ceci
<?php
     $headers ='From: "nom"<adresse@fai.fr>'."\n";
     $headers .='Reply-To: adresse_de_reponse@fai.fr'."\n";
     $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
     $headers .='Content-Transfer-Encoding: 8bit';

     $message ='<html><head><title>Un titre ici</title></head><body>Un message de test</body></html>';

     if(mail('adresse_du_destinataire@fai.fr', 'Sujet', $message, $headers))
     {
          echo 'Le message a été envoyé';
     }
     else
     {
          echo 'Le message n\'a pu être envoyé';
     }
?> 


J'ai par contre une petite question supplémentaire car il me semble déjà avoir essayé ce genre de ligne de code mais ca avait pas bien fonctionner, ça m'affichait dans mon mail toutes les balises HTML au lieu de faire un beau tableau

Les variables $nom, $prenom, $art1, etc.... seront ajouter dans
<html><head><title>Un titre ici</title></head><body>Un message de test</body></html> de quelle maniere ??
0
Christounet Messages postés 1266 Statut Membre 1 392
 
Bonjour,

Exemple de code pour ajouter les premières lignes dans le mail:

$texte  = '<html><head><title>Un titre ici</title></head>\n';
$texte .= '<body>Détails client<table>\n';
$texte .= '<tr><td>Nom: $nom:</td><td>Prenom: $prenom</td></tr>\n';
$texte .= '<tr><td colspan=2>Adresse mail: $mail</td></tr>\n';
...
...
$texte .= '</table></body></html>';


A plus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
VincentVV
 
Voila, on arrive a mon probleme...

Voici mon code pour le fichier traitement.php
<html>
<body>
<?php
$header.="MIME-Version: 1.0\r\n";   
$header.="Content-Type: text/html";
$header.= "X-Mailer: PHP ".phpversion()."n";
$adresse="info@quadstyling.be";
$from="From: $prenom $nom<$mail>\r\n";
$from.="Reply-To: $prenom $nom <$mail>\n";
$from.="X-priority:3\n";
$sujet.="Commande via www.quadstyling.be";
$texte  = '<html><head><title>Un titre ici</title></head>\n';
$texte .= '<body>Détails client<table>\n';
$texte .= '<tr><td>Nom: $nom:</td><td>Prenom: $prenom</td></tr>\n';
$texte .= '<tr><td colspan=2>Adresse mail: $mail</td></tr>\n';

if (mail($adresse,$sujet,$texte,$from,$header))
echo("<center><br><br>QuadStyling vous remercie</p> de votre visite,<br><br><br>un mail de confirmation vous sera envoy&eacute; apr&egrave;s v&eacute;rification et traitement de votre commande.<br><br><br><b><u>NOTRE NOUVELLE BOUTIQUE EN LIGNE VERRA LE JOUR EN JANVIER 2008</u></b><br><br><br><br>Les avantages de la nouvelle boutique:<li>Panier personnalisé <li>Possibilité de paiement en ligne <li>Nouveau classement des articles <li>Historique de commandes <li>Newsletter</li>");
	
else                              
echo("<center><font color=red><br><br><br><h2>Probl&egrave;me &agrave; l'envoi du mail...d&eacute;sol&eacute; nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href=\"mailto:$adresse\">classiquement</a>");
?>
</html>
</body>


Voici ce que je reçois sur le mail
<html><head><title>Un titre ici</title></head>\n<body>Détails client<table>\n<tr><td>Nom: $nom:</td><td>Prenom: $prenom</td></tr>\n<tr><td colspan=2>Adresse mail: $mail</td></tr>\n
0
Christounet Messages postés 1266 Statut Membre 1 392
 
Bonjour,

Pourquoi tu n'as pas inclus exactement les deux lignes de codes ci-dessous ?

$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit'


J'ai fait une faute lors de l'exemple du code, il faut ajouter . avant et après chaque variable, ci-dessous le code corrigé:

$texte  = "<html><head><title>Un titre ici</title></head>\n";
$texte .= "<body>Détails client<table>\n";
$texte .= "<tr><td>Nom:" . $nom . "</td><td>Prenom: " . $prenom . "</td></tr>\n";
$texte .= "<tr><td colspan=2>Adresse mail: " . $mail . "</td></tr>\n";
...
...
$texte .= "</table></body></html>";

Tu trouveras des explications plus complètes sur les liens ci-dessous:

Mail HTML

Autre exemple

A plus
0
VincentVV
 
Dès que je code ceci... C'est a dire avec la ligne
$header .='Content-Transfer-Encoding: 8bit'


j'ai une erreur en ligne 8
Parse error: syntax error, unexpected T_VARIABLE in /home.10.23/quadstyl/www/quadstylogue/traitement.php on line 8


<html>
<body>
<?php
$header.="MIME-Version: 1.0\r\n";   
$header.='Content-Type: text/html; charset="iso-8859-1"'."\n";
$adresse.="info@quadstyling.be";
$header.='Content-Transfer-Encoding: 8bit'
$from.="From: .$prenom. .$nom.<$mail>\r\n";
$from.="Reply-To: .$prenom. .$nom. <$mail>\n";
$from.="X-priority:3\n";
$sujet.="Commande via www.quadstyling.be";
$texte.= '<html><head><title>mon titre</title></head>\n';
$texte.= '<body>Détails client<table>\n';
$texte.= '<tr><td>Nom: .$nom.</td><td>Prenom:.$prenom.</td></tr>\n';
$texte.= '<tr><td colspan=2>Adresse mail: .$mail.</td></tr>\n';

if (mail($adresse,$sujet,$texte,$from,$header))
echo("<center><br><br>QuadStyling vous remercie</p> de votre visite,<br><br><br>un mail de confirmation vous sera envoyé après vérification et traitement de votre commande.<br><br><br><b><u>NOTRE NOUVELLE BOUTIQUE EN LIGNE VERRA LE JOUR EN JANVIER 2008</u></b><br><br><br><br>Les avantages de la nouvelle boutique:<li>Panier personnalisé <li>Possibilité de paiement en ligne <li>Nouveau classement des articles <li>Historique de commandes <li>Newsletter</li>");
	
else                              
echo("<center><font color=red><br><br><br><h2>Problème à l'envoi du mail...désolé nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href=\"mailto:$adresse\">classiquement</a>");
?>
</html>
</body>


Je reçois une erreur sur la ligne 8
0
rescue Messages postés 1047 Statut Contributeur 136
 
Bonjour,

Si c'est juste pour envoyer du texte tous simplement le code ci-dessous suffit :

<?php

if (@mail("mon_mail@mon_fai.fr", "$objet",
"".
"$message".
"",
"From: $expediteur\r\n"
."Content-Type: text/x-setext; charset=\"iso-8859-1\" "))
{
echo "L'envoi de votre message a été un succès.";
}
else
{
echo "Impossible d'envoyer votre message !!!";
}

?>

@+
0