/*------------------------------*/
|
/*
|
Titre : Formulaire complet d'envoi de mail
|
|
Auteur : Mathieu
|
Date édition : 01 Sept 2004
|
Date mise a 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
- récupére 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]
aprés 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