Envoyer un email avec un formulaire

Comment envoyer un email avec un formulaire de contact.

Créer un formulaire c'est bien, pouvoir l'envoyer c'est encore mieux !

Pour faire suite au tuto sur comment Créer un formulaire, nous allons voir maintenant comment envoyer les données de celui-ci.

Nous partons d'un simple formulaire composé de 3 champs (objet, message, email) et dont la page se nomme contact.php.

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<fieldset>
<legend>Formulaire</legend>
<p>Objet de votre message:</p>
<input name="champ1" size="40" maxlength="100" type="text"/><br/>
<p>Votre message:</p>
<textarea name="champ2" rows="5" cols="30"></textarea><br/>
<p>Votre email:</p>
<input name="champ3" size="40" maxlength="100" type="text"/><br/>
<input name="Valider" value="Valider" type="submit"/>
<input name="Effacer" value="Effacer" type="reset"/>
</fieldset>
</form>

 Note: Le code <?php echo $_SERVER["PHP_SELF"]; ?> renvoit l'url actuelle du fichier, c'est à dire que le code équivaut à http://mon-site.fr/contact.php.

Attaquons maintenant la partie PHP.

Dans un premier temps, nous vérifions que le formulaire à bien été envoyé.
if(isset($_POST["Valider"])) signifie en gros : Si le formulaire a été envoyé.

<?php
if(isset($_POST["Valider"]))
{
...
}
?>

 Ensuite on stoque les données du formulaire dans des variables et on arrange leurs mises en forme. La fonction stripslashes supprime les antislashs d'une chaîne.
Supposons qu'une personne poste par exemple :"J'ai une location d'appartement pour toi.". Le formulaire sans la fonction stripslashes retourne alors la phrase :"J\'ai une location d\'appartement pour toi.".

<?php
if(isset($_POST["Valider"]))
{
$lechamp1 = stripslashes($_POST["champ1"]);
$lechamp2 = stripslashes($_POST["champ2"]);
$lechamp3 = stripslashes($_POST["champ3"]);
...
//on ferme if(isset($_POST["Valider"]))
}
?>

Maintenant, on vérifie que les champs du formulaire ne sont pas vides.
empty : Détermine si une variable contient une valeur non nulle.
if(empty($lechamp1)) signifie en gros : Si la variable est vide.
if signifie Si.
else if signifie Sinon si.
Donc pour cette dernière partie du code et si je résume un peut, ça donne:
Si le champ1 est vide, j'affiche une erreur, sinon si lechamp2 est vide, j'affiche une erreur, sinon si le champ3 est vide, j'affiche une erreur.

<?php
if(isset($_POST["Valider"]))
{
$lechamp1 = stripslashes($_POST["champ1"]);
$lechamp2 = stripslashes($_POST["champ2"]);
$lechamp3 = stripslashes($_POST["champ3"]);
 
if(empty($lechamp1)){
echo 'Le champ1 est vide. <br/>';
}
else if(empty($lechamp2)){
echo 'Le champ2 est vide.<br/>';
}
else if(empty($lechamp3)){
echo 'Le champ3 est vide.<br/>';
}
...
//on ferme if(isset($_POST["Valider"])) }
?>

Les champs maintenant vérifiés, on prépare des variables pour stoquer votre email, l'email de l'expéditeur, l'url de votre site et votre pseudo ou nom et on utilise else pour passer à la phase suivante.
On prépare également l'entête du mail.
else signifie sinon.

<?php
if(isset($_POST["Valider"]))
{
$lechamp1 = stripslashes($_POST["champ1"]);
$lechamp2 = stripslashes($_POST["champ2"]);
$lechamp3 = stripslashes($_POST["champ3"]);
 
if(empty($lechamp1)){
echo 'Le champ1 est vide. <br/>';
}
else if(empty($lechamp2)){
echo 'Le champ2 est vide.<br/>';
}
else if(empty($lechamp3)){
echo 'Le champ3 est vide.<br/>';
} else
{
$mon_email = "votre_email@free.fr";
$mon_pseudo = "votre_pseudo";
$mon_url = "http://url_de_votre_site.fr";
$son_email = ''.$lechamp3.'';
 
// Envoie du mail
$entete = "From: " . $mon_pseudo . " <" . $son_email . ">\n";
$entete .= "MIME-Version: 1.0";
...
 
//on ferme le else
}
//on ferme if(isset($_POST["Valider"]))
}
?>

 Pour finir, on envoie le mail grace à la fonction mail() de PHP et on ajoute un petit méssage si tout c'est bien passé ou non.
n\ en PHP permet un retour à la ligne. C'est donc un équivalent de <br />.

<?php
if(isset($_POST["Valider"]))
{
$lechamp1 = stripslashes($_POST["champ1"]);
$lechamp2 = stripslashes($_POST["champ2"]);
$lechamp3 = stripslashes($_POST["champ3"]);
 
if(empty($lechamp1)){
echo 'Le champ1 est vide. <br/>';
}
else if(empty($lechamp2)){
echo 'Le champ2 est vide.<br/>';
}
else if(empty($lechamp3)){
echo 'Le champ3 est vide.<br/>';
}
else
{
$mon_email = "votre_email@free.fr";
$mon_pseudo = "votre_pseudo";
$mon_url = "http://url_de_votre_site.fr";
$son_email = ''.$lechamp3.'';
 
// Envoie du mail
$entete = "From: " . $mon_pseudo . " <" . $son_email . ">\n";
$entete .= "MIME-Version: 1.0";
if (@mail($mon_email,$lechamp1,$lechamp2,$entete))
{ 
echo "Votre message a été envoyé.<br />\n"; 
echo "<a href=\"" . $mon_url . "\">Retour</a>\n"; 
}
else 
{ 
echo "Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez</a>\n";
}
//on ferme le else
}
//on ferme if(isset($_POST["Valider"]))
}
?>
 

 Notez bien que ce tuto sur l'envoie d'un formulaire est juste un formulaire de base. Celui-ci ne vérifie pas si la syntaxe de l'email est correcte et ne ré-affiche pas non plus les données remplies par l'utilisateur si une erreur survient.


Voir/déposer un commentaire (9) | Signaler un problème