Lier les formulaires de contact de mon site à mon adresse email

Busima 8 Messages postés mercredi 10 février 2016Date d'inscription 15 juillet 2017 Dernière intervention - 20 mai 2017 à 14:07 - Dernière réponse : yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention
- 22 mai 2017 à 16:00
Bonjour à tous les doyens,

J'ai un soucis, je cherche à relier les formulaires de contact de la page contact de mon site à mon adresse email de telle sorte que je reçoive directement tous les messages postés par mes clients directement dans ma boîte email.

J'ai élaboré à cet effet deux pages: la page contact.php et la page traitement_contact.php dont les codes suivent ci-dessous:

Page contact.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<div class="row">
<!-- contact form -->
<form action="traitement_contact.php" method="post" class="tm-contact-form">
<div class="col-lg-6 col-md-6 tm-contact-form-input">
<div class="form-group">
<input type="text" name="nom" class="form-control" placeholder="NOM" />
</div>
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="EMAIL" />
</div>
<div class="form-group">
<input type="text" name="objet" class="form-control" placeholder="OBJET" />
</div>
<div class="form-group">
<textarea name="message" class="form-control" rows="6" placeholder="MESSAGE"></textarea>
</div>
<div class="form-group">
<button class="tm-submit-btn" type="submit" name="envoyer">Envoyer</button>
</div>
</div>
</form>
</div>
</div>
</section>
</body>
</html>


Ensuite voici le code de la page traitement_contact.php


<?php
/* CONFIGURATION */
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule $destinataire = 'adresse1@yahoo.fr,adresse2@gmail.com'; // copie ? (envoie une copie au visiteur)$copie = 'oui'; // 'oui' ou 'non' // Messages de confirmation du mail$message_envoye = "Votre message nous est bien parvenu !";$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP."; // Messages d'erreur du formulaire$message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.php\">envoyer le formulaire</a>.";$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

/* FIN DE LA CONFIGURATION */

// on teste si le formulaire a été soumisif (!isset($_POST['envoyer'])){ // formulaire non envoyé echo '<p>'.$message_erreur_formulaire.'</p>'."\n";}else{ /* * cette fonction sert à nettoyer et enregistrer un texte */ function Rec($text) { $text = htmlspecialchars(trim($text), ENT_QUOTES); if (1 === get_magic_quotes_gpc()) { $text = stripslashes($text); } $text = nl2br($text); return $text; }; /* * Cette fonction sert à vérifier la syntaxe d'un email */ function IsEmail($email) { $value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email); return (($value === 0) || ($value === false)) ? false : true; } // formulaire envoyé, on récupère tous les champs. $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; $email = (isset($_POST['email'])) ? Rec($_POST['email']) : ''; $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : ''; $message = (isset($_POST['message'])) ? Rec($_POST['message']) : ''; // On va vérifier les variables et l'email ... $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré if (($nom != '') && ($email != '') && ($objet != '') && ($message != '')) { // les 4 variables sont remplies, on génère puis envoie le mail $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" . 'Reply-To:'.$email. "\r\n" . 'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" . 'Content-Disposition: inline'. "\r\n" . 'Content-Transfer-Encoding: 7bit'." \r\n" . 'X-Mailer:PHP/'.phpversion(); // envoyer une copie au visiteur ? if ($copie == 'oui') { $cible = $destinataire.';'.$email; } else { $cible = $destinataire; }; // Remplacement de certains caractères spéciaux $message = str_replace("'","'",$message); $message = str_replace("’","'",$message); $message = str_replace(""",'"',$message); $message = str_replace('<br>','',$message); $message = str_replace('<br />','',$message); $message = str_replace("<","<",$message); $message = str_replace(">",">",$message); $message = str_replace("&","&",$message); // Envoi du mail $num_emails = 0; $tmp = explode(';', $cible); foreach($tmp as $email_destinataire) { if (mail($email_destinataire, $objet, $message, $headers)) $num_emails++; } if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1))) { echo '<p>'.$message_envoye.'</p>'; } else { echo '<p>'.$message_non_envoye.'</p>'; }; } else { // une des 3 variables (ou plus) est vide ... echo '<p>'.$message_formulaire_invalide.' <a href="contact.php" rel="nofollow noopener noreferrer" target="_blank">Retour au formulaire</a></p>'."\n"; };}; // fin du if (!isset($_POST['envoi']))?>


Veuillez m'aider pour la correction du code ou si vous pouvez me donner un bon code qui marche très bien et qui n'envois pas les messages dans le dossier spam, car celui m'envoyait les messages dans le dossier spam lorsqu'il marchait, mais il ne marche même plus.
Merci d'avance pour votre aide!

Afficher la suite 

12 réponses

Répondre au sujet
yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 20 mai 2017 à 14:22
0
Utile
11
ton code php a-t-il changé entre le moment où il marchait et le moment où il ne marche plus? sinon, c'est peut-être ton hébergeur qui bloque tes mails.
si tes mails arrivent dans ton dossier spam, cela prouve qu'ils sont bien envoyés, donc que ton code php fonctionnait bien.
il y a peut-être moyen de modifier le contenu du mail pour éviter qu'il arrive dans ta boîte spam. le mail est envoyé à ton adresse email, ce n'est pas l'expéditeur qui choisit dans quel dossier le mail est classé.
Busima 8 Messages postés mercredi 10 février 2016Date d'inscription 15 juillet 2017 Dernière intervention > yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 20 mai 2017 à 15:42
On affiche: "Votre message nous est bien parvenu !" Comme je le souhaitais d'ailleurs. Mais je vois pas le message dans la boîote de reception ni dans le dossier spam.
yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > Busima 8 Messages postés mercredi 10 février 2016Date d'inscription 15 juillet 2017 Dernière intervention - 20 mai 2017 à 15:52
donc
mail($email_destinataire, $objet, $message, $headers)
a réussi, le mail a été accepté pour livraison.
je te suggère d'afficher le contenu de $email_destinataire et de $headers.
Busima > yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention - 22 mai 2017 à 12:04
Bonjour yg_be, je ne vois pas ou est ce que je dois mettre ce code et comment afficher le contenu de $email_destinataire et de $headers. Je suis vraiment débutant!
Felice_ 266 Messages postés mardi 25 avril 2017Date d'inscription 20 juillet 2017 Dernière intervention > Busima - 22 mai 2017 à 12:25
Tu utilises la structure « echo » :
echo $email_destinataire . '<br />';
echo $headers;


Tu les places où tu le souhaites.
yg_be 4149 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 15 décembre 2017 Dernière intervention > Busima - 22 mai 2017 à 16:00
foreach($tmp as $email_destinataire)  
{
     echo $email_destinataire . '<br />';
     echo $headers;
   if (mail($email_destinataire, $objet, $message, $headers))    
          $num_emails++;  
}
Commenter la réponse de yg_be