Envoyer un email avec PHP et un formulaire

Pour faire suite au tutoriel Envoyer un email en PHP , voici l'explication de comment envoyer un mail en PHP avec un formulaire.

Le formulaire

Pour débuter, nous allons créer un formulaire, qui contiendra les champs qui seront nécéssaires à l'envoi du mail : nom de l'auteur, mail de l'auteur, sujet de l'email, contenu du message. Nous pourrions bien sûr ajouter d'autres champs comme la possibilité de renseigner des adresses en copie carbone, en copie carbone cachée, un niveau de priorité...

Pour cela, placez vous dans l'onglet Formulaire du panneau Insertion et créez d'abord le formulaire. Dans le panneau propriétés, changez son nom pour envoiemail et vérifiez que le formaulaire est réglé sur POST et non sur GET.

Puis insérez, toujours depuis le panneau Insertion les 3 champs de texte correpondant aux nom, email et sujet. Sélectionnez chacun d'eux pour changer la valeur de leur nom pour respectivement nom, email et sujet.

En dernier lieu, ajoutez également un champ de texte multiligne pour le texte du message, que vous nommerez message, ainsi qu'un bouton de formulaire.

Image 1

Votre formulaire est prêt, nous allons prévoir le texte à afficher lorsque le mail sera envoyé. Nous allons l'ajouter dans la même page, en dessous de notre formulaire :

Image 2

Vous pouvez vérifier que votre code HTML ressemble à cela :

<h1>Envoyer un email avec PHP</h1>
<form name="envoiemail" id="envoiemail" method="post" action="">
<p>Votre nom :<br />
<input name="nom" type="text" id="nom" />
</p>
<p>Votre email :<br />
<input name="email" type="text" id="email" />
</p>
<p>Sujet de votre email :<br />
<input name="sujet" type="text" id="sujet" />
</p>
<p>Message :<br />
<textarea name="message"></textarea>
</p>
<p>
<input name="Submit" type="submit" value="Envoyer" />
</p>
</form>
<p>Le message a bien &eacute;t&eacute; envoy&eacute;, merci.</p>

Valider le formulaire

Il nous faut alors faire en sorte qu'aucun des champs ne reste vide au moment où l'utilisateur cliquera sur Envoyer. Pour cela, sélectionnez le bouton Envoyer, dans le panneau Inspecteur de balises, onglet comportements, cliquez sur le [+], choisissez Valider le formulaire.

Là, vos quatre champs de formulaires sont listés. Pour chacun d'entre eux, en cliquant dessus vous les selectionnez et pouvez cocher alors la case "Obligatoire", afin d'être sûr que la personne remplira ce champ avant de valider le formulaire. Vous pouvez également faire en sorte que l'utilisateur remplira une adresse email valide dans la case correspondante. Ainsi, lorsque vous sélectionnez le champ email, précisez ce type dans le bas de la fenêtre.

Image 3

A partir de là, l'utilisateur ne pourra pas envoyer l'email sans remplir tous les champs du formulaire.

La partie dynamique

Nous allons d'abord faire en sorte qu'avant l'envoi de l'email, le formulaire s'affiche et qu'après ce soit le message de confirmation.

Comment savoir si l'email a été envoyé ? Nous allons pour cela tester la valeur de la variable message du formulaire. Si elle est vide, l'email n'a pas été envoyé, sinon oui.

Pour cela nous allons utiliser la variable superglobale correspondante :

$_POST['message']

Ainsi nous ajoutons avant le code HTML de notre formulaire :

<?php if ($_POST['message'] == "") { // si la variable message est vide ?>

Et juste après :

<?php }
else { // sinon, si la variable message n'est pas vide ?>

Sans oublier après le message de confirmation :

<?php } ?>

Ce qui nous donne comme code :

<?php if ($_POST['message'] == "") { ?>
<form name="envoiemail" id="envoiemail" method="post" action="">
<p>Votre nom :<br />
<input name="nom" type="text" id="nom" />
</p>
<p>Votre email :<br />
<input name="email" type="text" id="email" />
</p>
<p>Sujet de votre email :<br />
<input name="sujet" type="text" id="sujet" />
</p>
<p>Message :<br />
<textarea name="message"></textarea>
</p>
<p>
<input name="Submit" type="submit" onclick="MM_validateForm('nom','','R', 'email','','NisEmail','sujet','','R','textarea','','R');return document.MM_returnValue" value="Envoyer" />
</p>
</form>
<?php } else { ?>
<p>Le message a bien &eacute;t&eacute; envoy&eacute;, merci.</p>
<?php } ?>

Il ne nous reste plus qu'à utiliser le code PHP crée dans le tutorial précédent pour terminer l'envoi de l'email :

mail("mail@provider.com", "Sujet du message", "Contenu du message");

Que nous adaptons aux valeurs du formulaire posté :

mail("votre@email.com", $_POST['sujet'], $_POST['message'],"From: ".$_POST['nom']."<".$_POST['email'].">");

Placez ce code dans la partie correspondant à l'évènement email envoyé, vous obtiendrez ce code :

<?php if ($_POST['message'] == "") { ?>
<form name="envoiemail" id="envoiemail" method="post" action="">
<p>Votre nom :<br />
<input name="nom" type="text" id="nom" />
</p>
<p>Votre email :<br />
<input name="email" type="text" id="email" />
</p>
<p>Sujet de votre email :<br />
<input name="sujet" type="text" id="sujet" />
</p>
<p>Message :<br />
<textarea name="message"></textarea>
</p>
<p>
<input name="Submit" type="submit" onclick="MM_validateForm('nom','','R', 'email','','NisEmail','sujet','','R','textarea','','R');return document.MM_returnValue" value="Envoyer" />
</p>
</form>
<?php } else {
mail("votre@email.com", $_POST['sujet'], $_POST['message'],"From: ".$_POST['nom']."<".$_POST['email'].">");
?>
<p>Le message a bien &eacute;t&eacute; envoy&eacute;, merci.</p>
<?php } ?>

Votre formulaire doit fonctionner maintenant.

Retour aux tutoriaux

Livres

PHP 5 avanc

Pratique de MySQL et PHP

Programmation php facile

PHP pour d?butants

PHP et MySQL (versions 4 et 5)

PHP 5 et MySQL

Liens

Flashxpress

Dreamweaver Media Box

Nexen

Qwix

ASP-PHP

Journal du net

RSS

RSS

comparez les prix et les avis de produits en ligne !
Vous recherchez
un computer, notebook, imprimante, scanner,
écran plat ?
Comparez les prix et lisez des avis d'utilisateurs !
Yeca - Ultimteam - CC - Webmaster PHP - Blog geek