Exécuter un code html dans un email

Fermé
Yohann - 24 janv. 2011 à 18:24
 Yohann - 25 janv. 2011 à 14:12
Bonjour,

Je travaille depuis peu sur un site web.
J'ai commencé par apprendre à programmer en (x)html / css, mais comme je voulais créer un formulaire qui puisse être envoyé vers une adresse email, j'ai du me mettre à php.

J'ai réussi tant bien que mal à dompter la fonction mail(), mais mon problème à présent c'est que dans le mail résultant du formulaire, je souhaite afficher plusieurs des champs remplis par le visiteur.

Jusque la, on peut dire que j'ai réussi. Mais vous me direz :" Alors quel est ton problème ?"

Et bien le voici :

J'ai testé l'envoi de mail sur ma boite perso, mais le soucis c'est que le message affiche le code en html / php.
Ceci n'est pas mon but puisque que je voudrais que ce code s'exécute.

Si vous avez une solution, je suis preneur ...

Merci d'avance ...
A voir également:

5 réponses

pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
24 janv. 2011 à 18:33
Bonjour,

tu ne peux pas exécuter du code php ainsi, le php doit être exécuté sur ton serveur et transformé en html avant d'être inclus dans le corps de ton mail.
Si ton coe apparait tel quel' c'est qu'il te manque le $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";

<?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>'.$_POST['monchamp'].'</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é';
}
?>
2
Ch93 Messages postés 5168 Date d'inscription mardi 18 janvier 2011 Statut Membre Dernière intervention 23 janvier 2013 728
24 janv. 2011 à 18:37
J'ajouterai qu'il faut aussi que le destinataire lise ses méls en html et non pas en texte.
0
Voici mon code :

<?php

$headers ='From: "E2G"<www.elec-e2g.fr>'."\n";
$headers .='Reply-To: yohann.gras@gmail.com'."\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>

<strong><?php echo htmlspecialchars($_POST[\'Nom\']) . \' \' . htmlspecialchars($_POST[\'Prénom\']); ?></strong></br>

<?php echo \'Domicilié au \' . htmlspecialchars($_POST[\'Adresse\']) . \' \' . htmlspecialchars($_POST[\'Codepostal\']) . \' \' . htmlspecialchars($_POST[\'Ville\']);?></br></br>

<p>Fait appel à E2G pour la requête suivante : </p>

<strong><?php echo htmlspecialchars($_POST[\'Motif\']) . \': \' . htmlspecialchars($_POST[\'Siautre\']);?></strong></br>

<p> Joignable au <?php echo htmlspecialchars($_POST[\'Téléphone\']);?> </p></br>

<p> Envoyé le :</p> <?php $jour = date(\'d\');
$mois = date(\'m\');
$annee = date(\'Y\');
$heure = date(\'H\')1;
$minute = date(\'i\');
echo $jour . \'/\' . $mois . \'/\' . $annee . \' à \' . $heure. \' h \' . $minute;
?>

</body></html> ;?>

<?php

if(mail('yohann.gras@gmail.com', 'Sujet', $message, $headers))
{
echo 'Le message a été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}


?>

Si grâce à ça tu peux m'aider ça sera super. Encore merci !
1
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
24 janv. 2011 à 21:50
Voici ce qu'il faut modifier:
$message = '

<html><head><title>Un titre ici</title></head><body>

<strong><?php echo htmlspecialchars($_POST[\'Nom\']) . \' \' . htmlspecialchars($_POST[\'Prénom\']); ?></strong></br>
A corriger en:
$message = '
<html><head><title>Un titre ici</title></head><body>

<strong>'.htmlspecialchars($_POST['Nom']) .' ' . htmlspecialchars($_POST['Prénom']).'</strong></br> 

J'ai enlevé tout les \
Continu ainsi pour tout le contenu de la variable $message.
0
Merci pitxu, et merci beaucoup pour la rapidité de ta réponse.

Je vais essayer avec le code que tu me proposes et je te tiens au courant pour te dire si ça a résolu mon problème.

Encore merci !!


Edit :

Finalement ça n'a pas résolu mon problème ...
Le soucis maintenant (enfin c'est ce que je pense), serait que dans le <body> ... </body> de mon $message, j'ai besoin de mettre bien plus qu'un champ ... =S
Avec ta solution, j'ai bien reçu le message mis en forme mais les champs étaient vides ...

Je vous joins ce que j'aimerais mettre dans mon message ...

Soit j'ai fait des parse error un peu partout pour que ça bug, soit mon code est trop complexe pour être envoyé de cette manière ...

Dans ce cas, je suis preneur de n'importe quelle solution alternative ... si solution il y a ...

Merci à vous.


Ce que je voudrais envoyer :

(PS: c'est un formulaire pour se faire recontacter par une entreprise ...)
(PPS: dans la version $message, j'ai bien sur ajouté des \ devant chaque ' ...)


<strong><?php echo htmlspecialchars($_POST['Nom']) . ' ' . htmlspecialchars($_POST['Prénom']) ?></strong></br>
<?php echo 'Domicilié au ' . htmlspecialchars($_POST['Adresse']) . ' ' . htmlspecialchars($_POST['Codepostal']) . ' ' . htmlspecialchars($_POST['Ville']) ?></br></br>

<p>Fait appel à E2G pour la requête suivante : </p>

<strong><?php echo htmlspecialchars($_POST['Motif']) . ': ' . htmlspecialchars($_POST['Siautre'])?></strong></br>

<p> Joignable au <?php echo htmlspecialchars($_POST['Téléphone'])?> </p></br>

<p> Envoyé le :</p> <?php $jour = date('d');
$mois = date('m');
$annee = date('Y');
$heure = date('H') + 1 ;
$minute = date('i');
echo $jour . '/' . $mois . '/' . $annee . ' à ' . $heure. ' h ' . $minute;
?>
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
24 janv. 2011 à 20:34
Post le code de ta fonction mail stp
0

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

Posez votre question
Merci à vous tous pour vos réponses qui m'ont bien éclairé.

A présent, si vous avez besoin d'un artisan pour une installation électrique, vous pouvez remplir le formulaire (qui marche à merveille ! =) ) du site suivant :

http://www.elec-e2g.fr/

=D

Encore merci pour tout !!
0