Exécuter un code html dans un email
Yohann
-
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 ...
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:
- Exécuter un code html dans un email
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Comment creer un compte email - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
5 réponses
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é';
}
?>
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é';
}
?>
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.
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 !
<?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 !
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:
J'ai enlevé tout les \
Continu ainsi pour tout le contenu de la variable $message.
$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.
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;
?>
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;
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question