<?php
|
/*---------------------------------------------------------------*/
|
/*
|
Titre : Formulaire complet d'envoi de mail
|
|
URL : https://phpsources.net/code_s.php?id=57
|
Auteur : Mathieu
|
Date édition : 01 Sept 2004
|
Date mise à jour : 13 Sept 2019
|
Rapport de la maj:
|
- refactoring du code en PHP 7
|
- fonctionnement du code vérifié
|
- correction du code
|
- amélioration du code
|
- modification de la description
|
*/
|
/*---------------------------------------------------------------*/?>
|
<form name="contact_form" method="post" action="">
|
<table width="500">
|
<tr>
|
<td valign="top">
|
<label for="nom">Nom *</label>
|
</td>
|
<td valign="top">
|
<input type="text" name="nom" maxlength="50" size="30" value="<?php if (
|
isset($_POST['nom'])) echo htmlspecialchars($_POST['nom']);?>">
|
</td>
|
</tr>
|
<tr>
|
<td valign="top"">
|
<label for="prenom">Prénom *</label>
|
</td>
|
<td valign="top">
|
<input type="text" name="prenom" maxlength="50" size="30" value="<?php if
|
(isset($_POST['prenom'])) echo htmlspecialchars($_POST['prenom']);?>">
|
</td>
|
</tr>
|
<tr>
|
<td valign="top">
|
<label for="email">Email Addresse *</label>
|
</td>
|
<td valign="top">
|
<input type="text" name="email" maxlength="80" size="30" value="<?php if
|
(isset($_POST['email'])) echo htmlspecialchars($_POST['email']);?>">
|
</td>
|
</tr>
|
<tr>
|
<td valign="top">
|
<label for="telephone">Téléphone</label>
|
</td>
|
<td valign="top">
|
<input type="text" name="telephone" maxlength="30" size="30" value="
|
<?php if (isset($_POST['telephone'])) echo htmlspecialchars($_POST['telephone'])
|
;?>">
|
</td>
|
</tr>
|
<tr>
|
<td valign="top">
|
<label for="commentaire">Commentaire *</label>
|
</td>
|
<td valign="top">
|
<textarea name="commentaire" cols="28" rows="10"><?php if (isset($_POST[
|
'commentaire'])) echo htmlspecialchars($_POST['commentaire']);?></textarea>
|
</td>
|
</tr>
|
<tr>
|
<td colspan="2" style="text-align:center">
|
<input type="submit" value=" Envoyer ">
|
</td>
|
</tr>
|
</table>
|
</form>
|
|
<?php
|
if(isset($_POST['email'])) {
|
|
// EDIT THE 2 LINES BELOW AS REQUIRED
|
$email_to = "votre@email";
|
$email_subject = "Le sujet de votre email";
|
|
function died($error) {
|
// your error code can go here
|
echo
|
"Nous sommes désolés, mais des erreurs ont été détectées" .
|
" dans le formulaire que vous avez envoyé. ";
|
echo "Ces erreurs apparaissent ci-dessous.<br /><br />";
|
echo $error."<br /><br />";
|
echo "Merci de corriger ces erreurs.<br /><br />";
|
die();
|
}
|
|
|
// si la validation des données attendues existe
|
if(!isset($_POST['nom']) ||
|
!isset($_POST['prenom']) ||
|
!isset($_POST['email']) ||
|
!isset($_POST['telephone']) ||
|
!isset($_POST['commentaire'])) {
|
died(
|
'Nous sommes désolés, mais le formulaire que vous avez soumis semble' .
|
' poser problème.');
|
}
|
|
|
|
$nom = $_POST['nom']; // required
|
$prenom = $_POST['prenom']; // required
|
$email = $_POST['email']; // required
|
$telephone = $_POST['telephone']; // not required
|
$commentaire = $_POST['commentaire']; // required
|
|
$error_message = "";
|
$email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
|
|
if(!preg_match($email_exp,$email)) {
|
$error_message .=
|
'L\'adresse e-mail que vous avez entrée ne semble pas être valide.<br />';
|
}
|
|
// Prend les caractères alphanumériques + le point et le tiret 6
|
$string_exp = "/^[A-Za-z0-9 .'-]+$/";
|
|
if(!preg_match($string_exp,$nom)) {
|
$error_message .=
|
'Le nom que vous avez entré ne semble pas être valide.<br />';
|
}
|
|
if(!preg_match($string_exp,$prenom)) {
|
$error_message .=
|
'Le prénom que vous avez entré ne semble pas être valide.<br />';
|
}
|
|
if(strlen($commentaire) < 2) {
|
$error_message .=
|
'Le commentaire que vous avez entré ne semble pas être valide.<br />';
|
}
|
|
if(strlen($error_message) > 0) {
|
died($error_message);
|
}
|
|
$email_message = "Détail.\n\n";
|
$email_message .= "Nom: ".$nom."\n";
|
$email_message .= "Prenom: ".$prenom."\n";
|
$email_message .= "Email: ".$email."\n";
|
$email_message .= "Telephone: ".$telephone."\n";
|
$email_message .= "Commentaire: ".$commentaire."\n";
|
|
// create email headers
|
$headers = 'From: '.$email."\r\n".
|
'Reply-To: '.$email."\r\n" .
|
'X-Mailer: PHP/' . phpversion();
|
mail($email_to, $email_subject, $email_message, $headers);
|
?>
|
|
<!-- mettez ici votre propre message de succès en html -->
|
Â
|
Merci de nous avoir contacter. Nous vous contacterons très bientà´t.
|
|
<?php
|
|
}
|
|
|
Invité
10 Juin 2024 à 19:11Je vous remercie vraiment c'est le seul tuto qui marche
Invité
25 Jan 2024 à 19:09Salut, je ne sais pas si il y a encore quelqu'un par ici, mais juste pour signaler qu'il y a un " en trop sur un top . Sinon, impossible de l'intégrer directement dans mon index.php, car il doit manquer quelque chose a la fin qui fait que mon code html en dessous se retrouve en erreur. donc j'ai dû séparer la partie html et la partie php. en utilisant action="/php/envoi.php". Sinon le reste impéccable. et je vous remercie de votre partage.<td valign="top"">
<label for="prenom">Prénom *</label>
Invité
13 Juil 2023 à 17:18Je suis en localhost en live server avec wamp aprés l'envoi je vois bien le message de confirmation que le mail à été envoyé mais ma boîte email reste vide et il n'y a rien dans les spams non plus des idées svp ?
Invité
10 Jan 2023 à 16:45Un peu compliqué pour un débutant mais ça marche du tonnerre et j'apprends petit à petit.
Invité
18 Déc 2022 à 21:12Merci beaucoup
Invité
01 Déc 2022 à 05:07Merci bien !!!
Invité
19 Jan 2022 à 11:01Merci beaucoup
Invité
11 Jan 2022 à 10:00merci pour ton partage
Invité
09 Déc 2021 à 07:44Merci beaucoup
Invité
03 Nov 2021 à 22:08Bonjour débutant en php et désireux d'apprendre, je voulais savoir s'il fallait le coller dans le fichier html ou faire un fichier php?
BIDE
25 Oct 2021 à 18:07Merci. Mais les champs ne se vident pas aprés l'envoie du message. C'est gênant pour un visiteur et surtout ce ^probléme ne facilite pas la visite d'autres pages du site aprés l'envoie du message. Et aussi est-il possible que le sujet soit écrit par le visiteur ? Merci d'avance
Invité
09 Aout 2021 à 20:04Merci bcp pour ce partage!
Invité
08 Mars 2021 à 14:17Bonjour,
Merci pour le code. Comment rendre obligatoire le numéro de téléphone ?
Administrateur
04 Fév 2021 à 10:53Si à la place de l'expéditeur se trouve toujours l'adresse mail du serveur
Remplacer la Ligne 151 par celle ci :
$headers = 'From: texte <'.$email.">\r\n".
Invité
22 Jan 2021 à 08:28Bonjour merci pour le code???? Moi je rencontre toujours un souci, à la place de l'expéditeur se trouve toujours l'adresse mail du serveur et non l'adresse que j'ai mentionné dans From:
Administrateur
09 Déc 2020 à 01:26C'est l'idée, vous recevez le mail, donc Ligne 79 c'est la que vous mettez votre email : $email_to = "votre@email";
Invité
25 Sept 2020 à 18:05Merci il a l'air supper mais j'ai juste une question de débutant il faut que je mette ou mon mail pour que ca m'envoie les mails a moi ?
Invité
21 Avril 2020 à 13:53Super ! Ca fonctionne trés bien, c'est vraiment une bonne base.
Juste une remarque, j'ai changé la regex pour accepter les accentués dans le nom et le prénom. Merci à vous
Invité
25 Mars 2020 à 10:33Bonjour, il n'y a pas de fin de balise php, du style ?>, ce qui génère un problème dans le code si du HTML se trouve après. En rajoutant cette fermeture à la fin du code, cela fonctionne. Merci pour ce code
Invité
24 Mars 2020 à 18:31Merci pour ce partage. Le code fonctionne bien. Une véritable aide pour moi. Claudine.
KOogar
12 Déc 2019 à 05:43Pour résoudre ce problème, regardez votre en-tête (From) et assurez-vous qu’elle correspond à une boîte e-mail existante.
Sinon, assurez-vous de la créer.
Aussi assurez-vous que votre enregistrement SPF est activé si vous êtes sur un serveur dédié sinon vous ne rentrerez aucun mail spécifiquement sur Gmail.
https://www.hostinger.com/how-to/how-to-enable-or-add-spf-records
Invité
11 Déc 2019 à 19:05Bonjour! Merci pour ce "Supercode", il est stable et fonctionne bien chez Infomaniak. Mais il y a un souci! Mes messages arrivent dans le dossier "indésirables"
Invité
04 Déc 2019 à 19:23Ben merci a l'auteur alors!! Il est devenu super ce site
Invité
26 Sept 2019 à 15:19Ce code est génial et facile a installer. Un grand Merci à Mathieu :)
Invité
21 Fév 2009 à 11:18oui c juste il faut enlever les '[' , ':port', '[:path/to/socket]'
sinon ca genere des erreurs
Negfreddy
20 Fév 2008 à 18:02oui il est super mais comment faire l envoi !!
KOogar
20 Fév 2008 à 17:56Tutoriel PHP - Envoyer une newsletter
Negfreddy
20 Fév 2008 à 17:52je souhaiterais juste avoir une newslettre
- rcupre les emails dans la base de donn
- envoie mail en masse en html avec la fonciton_mail
si vous avez une adresse sa serais cool
Negfreddy
20 Fév 2008 à 17:50=>> mysql_connect([hostname [:port] [:path/to/socket]
faut retirer les [ ] et aussi [:port] [:path/to/socket]
aprs erreur
while($row = mysql_fetch_row($obRS)){
apres erreur case "Preview":
KOogar
20 Fév 2008 à 17:27Quel type d'erreur ?
Negfreddy
20 Fév 2008 à 14:28erreur sur ce code