Exécuter un code html dans un email

Yohann -  
 Yohann -
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 708 Statut Membre 95
 
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 6128 Statut Membre 729
 
J'ajouterai qu'il faut aussi que le destinataire lise ses méls en html et non pas en texte.
0
Yohann
 
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 3756 Statut Membre 475
 
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
Yohann
 
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 708 Statut Membre 95
 
Post le code de ta fonction mail stp
0

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

Posez votre question
Yohann
 
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