Bonjour !
Comme dit dans le titre, j'ai un problème avec la création de mon formulaire de contact.
Je souhaiterais "simplement" créer un formulaire avec 4 champs obligatoires (nom, prenom, mail, message) et le recevoir par mail.
Etant tout débutant en php, j'ai cherché (et trouvé) pas mal de tuto pour créer le script php qui devrait executer cette action.
Cependant, alors que tout à l'air de fonctionner correctement (message d'erreur quand c'est incorrect, redirection vers la page de confirmation quand tout est bon), je ne reçois jamais le mail.
J'ai bien essayer de chercher la solution mais je ne comprend pas d'où vient l'erreur.

Merci d'avance pour votre aide !

Code de mon formulaire :

            <form method="post" action="traitement.php">

                <p>
                  <label for="nom"></label>
                  <input type="text" name="nom"  id="nom" placeholder="NOM" size="53" autofocus required/></br>                  
                  
                  <label for="prenom"></label>
                  <input type="text" name="prenom"  id="prenom" placeholder="PRÉNOM" size="53" required /></br> 

                  <label for="email"></label>
                  <input type="email" name="email" id="email" placeholder="E-MAIL" size="53" required/></br>

                  <label for="message">Votre message</label></br>
                  <textarea name="message" id="message" placeholder="Laisser votre message..."cols="55" rows="10"></textarea></br>

                  <input type="submit" value="Envoyer" />
                  <input type="reset" value="Ignorer" />
                </p>

            </form>
      


Et celui de mon fichier php (créer grâce à plusieurs tuto trouvés sur internet..) :

<?php
$s = "";
function verifieEmail($mail) 
{
	if (preg_match('/^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]/i',$mail)) return false;
	list ($nom,$domaine) = explode ('@',$mail);
	if (getmxrr($domaine,$mxhosts)) return true;
	else return false;
} 
if (!empty($_POST['nom']) && !empty($_POST['email']) && !empty($_POST['message']))
{
    $destinataire = "emaildecontact@xxx.xx";
    $sujet = "Infos";
    $message = "Nom : ".$_POST['nom']."\r\n";
    $message .= "Prenom : ".$_POST['prenom']."\r\n";
    $message .= "Adresse email : ".$_POST['email']."\r\n";
    $message .= "Message : ".$_POST['message']."\r\n";
    $from = $_POST['email'];
    if (verifieEmail($from))
    {
        $entete = 'From: '.$from;
        if (mail($destinataire,$sujet,$message,$entete))
        {
            header('Location: confirmation.html'); // Redirection vers la page de confirmation
        }
        else
        {
            $s = "Une erreur s'est produite. Votre demande n'a pas été envoyée.";
        }
    }
    else
    {
        $s = "Votre email est invalide. Votre demande n'a pas été envoyée.";
    }
}
else
{
    $s = "Vous n'avez pas rempli tous les champs. Votre demande n'a pas été envoyée.";
}
if ($s) echo $s;

?>

Modifié par TurkElton (06 May 2015 - 09:22)
Bonjour chez moi le formulaire fonctionne a tu bien changer $destinataire = "emaildecontact@xxx.xx"; avec ton adresse mail ? a regarder dans les SPAM ?
Bonjour,
oui j'ai bien changé mon destinataire (j'ai mis ce faux contact juste sur le forum) et j'ai bien regardé les spams aussi.. rien.
Je ne l'ai pas encore testé en "live" avec mise en ligne, uniquement en local à partir de MAMP (je bosse sur mac), le problème pourrait-il venir de là?
Bonjour,

possible, est ce que tu as une erreur qui apparaît, par exemple " mail(): SMTP server response: 550 " ?
Tu arrives à t'envoyer un mail via autre part en local ?
Bonjour,
non je n'ai pas la moindre apparition d'erreur. Tout semble fonctionner normalement, mais je ne reçois pas de mail.

Comment ça : "Tu arrives à t'envoyer un mail via autre part en local ?" ?
Je ne l'avais pas testé non, mais avec ce que tu m'as donné le test est bon, tout fonctionne mais toujours aucun mail reçu. Pas non plus en spam.
J'ai essayé de changer l'adresse mail du $destinataire (par celui qui sera au final sur le site, celui du client) et la ça marche, le mail est reçu mais en spam... je n'y comprend rien ^^
Cela viendrait-il du coup de mon adresse de reception gmail? Y a-t-il une solution pour que le mail ne passe pas en spam?
Ça dépasse mes compétences là, moi même je me bats avec des mails envoyés en local actuellement Smiley lol

Il est possible que les erreurs n'apparaissent pas par défaut, tu peux toujours essayer de mettre "ini_set('display_errors', 1);" au début de ton code, avec "error_reporting(e_all);" histoire d'être sûr de tout avoir

Par contre je suis pas sûr d'avoir compris, t'as changé l'adresse de $destinataire par la tienne dans ton formulaire pour que ça marche ? C'est pas déjà ce que tu faisais et qui marchais pas ? Smiley biggol
Ok merci,
Déjà si cela fonctionne c'est un bon début ! Je trouverai une solution pour éviter le spam, un capcha peut être..

En fait ça ne marche pas avec mon adresse perso gmail (dont je me servais pour tester, alors qu'elle fonctionne avec le test que tu m,as donné, sans problème..) mais avec l'adresse de contact qui sera sur le site une fois en ligne, la ça passe mais en spam Smiley cligne