[PHP/HTML] Envoyer un formulaire par mail en HTML

iPascal

Membre confirmé
20 Novembre 2007
54
2
Paris
Salut à tous ! Encore besoin de votre aide;)

J'apprends au fur et à mesure les bases du PHP et du javascript mais mes connaissances ne suffisent pas...

En fait j'ai :
  • une page HTML contenant un formulaire (bon de commande)
  • une page PHP permettant l'envoi des données du formulaire par mail (mail envoyé à l'acheteur avec le récapitulatif de sa commande)
Jusque là pas de problème :)

Ca se complique car je voudrai que le mail ne soit pas du simple texte (pas beau LOL) mais présente les données du formulaire en HTML (un peu comme lorsqu'on passe commande sur l'apple store : on reçoit le récapitulatif de notre commande bien présenté)

J'ai donc bêtement créé une page HTML pour la mise en forme de mon mail dont j'ai copié le code dans ma variable $body de mon fichier PHP. Comme je le prévoyais, ça ne fonctionne pas.

D'où ma question : comment envoyer un mail au format HTML incluant des variables issues d'un formulaire grâce à un fichier de traitement PHP? :confused:

J'espère au moins que c'est possible:cool:

++

iPascal
 

iPascal

Membre confirmé
20 Novembre 2007
54
2
Paris
C'est justement grâce à cette page que j'avais appris à créer mes fichiers traitement.php.
Le problème c'est que lorsque je met mon code HTML dans la variable $message, les ' et " de mon code posent problème. Ex :
Bloc de code:
<?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>
  <style type="text/css">
  <!--
  .corps {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 14px;
	color: #666;
	text-align: justify;
  }
  -->
  </style>
  </head>
  <body>
  <p class="corps">Votre commande sera expédiée par Colissimo Suivi (La Poste).</p>
  </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é'; 
}
 

da capo

abonné absent
Club MacG
12 Août 2001
17 454
3 572
C'est justement grâce à cette page que j'avais appris à créer mes fichiers traitement.php.
Le problème c'est que lorsque je met mon code HTML dans la variable $message, les ' et " de mon code posent problème. Ex :

Quel problème ?
Tu as un message d'erreur ?
Que se passe-t-il ?
 

da capo

abonné absent
Club MacG
12 Août 2001
17 454
3 572
C'est normal que ton sélecteur de classe soit en commentaire ?

oui tibo : c'est une protection contre/pour les navigateurs les plus anciens n'interprétant pas les styles. Cela évite à ces derniers de planter lamentablement : ils afficheront au moins la page brute.
 
A

Anonyme

Invité
Perso j'ai utilisé ce code que j'ai adapté : ça fonctionne très bien et sans spam. C'est pour dotclear 1 mais très facilement adaptable, il ne faut pas oublier d'envoyer les headers quand on est dans la page contenant le formulaire pour éviter le piratage.

Le billet.
 

iPascal

Membre confirmé
20 Novembre 2007
54
2
Paris
@Gloup Gloup : je vais regarder ton code ensuite. Ca pourrait être intéressant :)

Pour l'instant je reste sur le code que j'ai fait. Merci grunmff pour la technique de l'antislash, ça fonctionne très bien. Voici les résultats :
  • Apple mail : impeccable. Toute la mise en forme est respectée
  • Thunderbird : idem, j'ai fini par régler le problème des accents
  • Gmail : juste la mise en forme élémentaire (saut de ligne, de paragraphe) mais pas de bordures, gras, taille de police...

En tout cas merci pour votre aide ! ! :up:
 

iPascal

Membre confirmé
20 Novembre 2007
54
2
Paris
Pas moyen de trouver la solution pour afficher correctement le contenu de l'email en HTML sous gmail (webmail):mad:. Même sous Hotmail ça passe!:D

Il doit y avoir quelque chose à préciser dans le code puisque la majorité des newsletter que je reçois s'affichent bien contrairement à mon mail...

EDIT : en fait gmail ne tient pas compte de mes styles dans <head>. Par contre le gras (<strong>) qui est dans <body> est bien reconnu...
 

iPascal

Membre confirmé
20 Novembre 2007
54
2
Paris
C'est normal va voir sûr www.pompage.net ;)

Merci Gloup Gloup! :) L'astuce était donc de mettre les CSS en ligne directement dans body. :up:

C'est justement ce que je venais de faire en constatant que le gras qui était dans body était pris en compte!

J'ai quand même pris la peine de lire la page que tu m'avais donnée et ça n'a pas été une perte de temps. J'ai remplacé mes div par un tableau pour que ça soit mieux reconnu, en particulier par outlook qui ne tenait pas compte de la largeur et de la position centrée.

MERCI À TOUS! :up:
++

PS. une dernière question : y a-t-il un véritable intérêt à faire un email mixe : texte brut/html?
 

p4bl0

Membre expert
Club MacG
12 Juillet 2004
4 772
423
32
$PWD
p4bl0.net
tu sais qu il y a beaucoup de gens qui banissent les html-crap
J'confirme.


Donc oui *attention roulement de tambour, fait très très rare voire quasi impossible, je vais dire du viens de voyages-sncf point com !!* le mieux est de proposé le choix de mail HTML ou plain text comme le fait le site voyages-scnf.