Bonjour,

j'ai fait un site avec un formulaire et un code qui doit m'envoyer un mail.

Le problème, c'est que je n'ai pas de message d'erreur mais je n'ai pas de mail non plus. Et rien ne me dit sur ma page si le mail à été envoyé ou pas.

Je débute et j'ai glané mon inspiration sur divers forums.

Est ce que quelqu'un pourrait m'expliquer où j'ai commis les erreurs car je galère depuis plus d'une semaine.

Le site est hébergé chez OVH avec la formule Kimsufi, n'est pas ça qui bloque ?

Voici mon formulaire :

<form class="rw-contact-form" action="index.php" method="post" enctype="multipart/form-data">
 
<div>
 
<label for="name">Votre Nom :</label> *<br />
 
<input class="form-input-field" type="text" value="" name="subject" id="name" required placehoder="Votre nom" size="40"/><br /><br />
 
<label for="email">Votre Email :</label> *<br />
 
<input class="form-input-field" type="email" value="" name="email" id="email" required placeholder="nom@exemple.fr" size="40"/><br /><br />
 
<label for="name">Objet du message :</label> *<br />
 
<input class="form-input-field" type="text" value="" name="sujet" id="sujet" required placeholder="Titre de votre message" size="40"/><br /><br />
 
<label for="message">Message :</label> *<br />
 
<textarea class="form-input-field" name="message" id="message" required rows="10" cols="38"></textarea><br /><br />
 
<input class="form-input-button" type="reset" name="resetButton" value="Recommencer" />
 
<input class="form-input-button" type="submit" name="submitButton" value="Envoyer" />
 
</div>
 
</form>


Voilà mon code php :

<?php
 
if (isset($_POST['submitButton']))
 
{
 
    if (get_magic_quotes_gpc())
 
    {
 
      $nom     = stripslashes(trim($_POST['nom']));
 
      $expediteur= stripslashes(trim($_POST['email']));
 
      $sujet= stripslashes(trim($_POST['sujet']));
 
      $message= stripslashes(trim($_POST['message']));
 
    }
 
    else
 
    {
 
      $nom    = trim($_POST['nom']);
 
      $expediteur= trim($_POST['email']);
 
      $sujet= trim($_POST['sujet']);
 
      $message= trim($_POST['message']);
 
    }
 
    $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
 
    $regex_head = '/[\n\r]/';
 
    if($_SERVER['HTTP_REFERER'] != 'http://www.monsite.fr/nous_contacter/index.php')
 
    {
 
      header('Location:  http://www.monsite.fr');
 
 
    }
 
    elseif (empty($nom) 
 
           || empty($expediteur)
 
           || empty($sujet)
 
           || empty($message))
 
    {
 
      $alert = 'Tous les champs doivent être renseignés';
 
    }
 
    elseif (!preg_match($regex_mail, $expediteur))
 
    {
 
      $alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
 
    }
 
    elseif (preg_match($regex_head, $expediteur)
 
            || preg_match($regex_head, $nom)
 
            || preg_match($regex_head, $sujet))
 
    {
 
        $alert = 'En-têtes interdites dans les champs du formulaire';
 
    }
 
    elseif (!isset($_COOKIE['sent']))
 
    {
 
        $to = 'contact@monsite.fr';
 
        $msg  = 'Bonjour,'."\r\n\r\n";
 
        $msg .= 'Ce mail a été envoyé depuis monsite.fr par'.$nom."\r\n\r\n";
 
        $msg .= 'Voici le message qui vous est adressé :'."\r\n";
 
        $msg .= '***************************'."\r\n";
 
        $msg .= $message."\r\n";
 
        $msg .= '***************************'."\r\n";
 
        $headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
 
  
 
        if (mail($to, $sujet, $msg, $headers))
 
        {
 
            $alert = 'E-mail envoyé avec succès';
 
  
 
            setcookie("sent", "1", time() + 120);
 
  
 
            unset($_POST);
 
        }
 
        else
 
        {
 
            $alert = 'Erreur d\'envoi de l\'e-mail';
 
        }
 
    }
 
    else
 
    {
 
        unset($_POST);
 
    }
 
}
 
?>


Merci à tous ceux qui auront eu le courage d'arriver à cette ligne et à ceux qui prendront de leur temps pour me dépatouiller.
salut,

$_POST['nom'] n'existe pas, le champs html s'appel : subject

pour déboguer il faut afficher les erreurs php (au minimum error_reporting = E_ALL; + display_error =on). il est possible d'utiliser la fonction ini_set pour cela.

ensuite il faut suivre le code pas à pas et afficher les données à chaque pour "voir" où le code passe.
généralement les fonctionsvar_dump et print_r sont utilisées.

l'affichage des erreurs et les var_dump / print_r sont bien sur à supprimer pour un fonctionnement normal.

Avant de mettre cela sur un serveur distant il est préférable de le coder sur sa machine "en local" afin de vérifier le bon fonctionnement et aussi d'utiliser un débogueur. (avec un ide tel eclipse, netbeans, idea / phpstorm ....).
sous windows il y a la possibilité d'installer mailcatcher pour simuler le serveur smtp Smiley cligne


@+
Modérateur
Au passage ta regex mail est erronée.
PHP intègre ce qu'il faut pour valider avec une regex mise à jour:

filter_var($email, FILTER_VALIDATE_EMAIL);