Bonjour,

Voilà j'ai un formulaire de contact sur une page HTML5 et un fichier en php. Mais je ne reçois pas les emails, même pas dans les spams. Le problème vient peut-etre un fichier du code que j'ai eu sur le web qui avait les deux fichiers en php que j'ai revu pour mon html car je ne m'y connais pas trop en php. Voici ci-dessous le code :

HTML :

<form id="form" action="send_envoi.php" method="post">
                
                <label for="nom">Nom prénom :</label>
                <input type="text" class="text" name="nom" id="nom">

                <label for="email">Email :</label>
                <input type="text" class="text" name="email" id="email">

                <label for="sujet">Sujet :</label>
                <input type="text" class="text" name="sujet" id="sujet">

                <label for="message">Message :</label>
                <textarea class="text" name="message" id="message" rows="5" cols="10"></textarea>

                <input type="submit" class="submit" value="Envoyer">

            </form>


PHP je précise que j'ai remplacé mon adresse email Smiley cligne

<?php
session_start();//on démarre la session
// $errors = [];
  $errors = array(); // on crée une vérif de champs
if(!array_key_exists('nom', $_POST) || $_POST['nom'] == '') {// on verifie l'existence du champ et d'un contenu
  $errors ['nom'] = "vous n'avez pas renseigné votre nom";
  }
if(!array_key_exists('email', $_POST) || $_POST['email'] == '' || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {// on verifie existence de la clé
  $errors ['mail'] = "vous n'avez pas renseigné votre email";
  }
if(!array_key_exists('message', $_POST) || $_POST['message'] == '') {
  $errors ['message'] = "vous n'avez pas renseigné votre message";
  }
if(array_key_exists('antispam', $_POST)) {// on place un petit filet anti robots spammers
  $errors ['antispam'] = "Vous êtes un robots spammer";
  }
//On check les infos transmises lors de la validation
  if(!empty($errors)){ // si erreur on renvoie vers la page précédente
  $_SESSION['errors'] = $errors;//on stocke les erreurs
  $_SESSION['inputs'] = $_POST;
  header('Location: index.html');
  }else{
  $_SESSION['success'] = 1;
  $headers  = 'MIME-Version: 1.0' . "\r\n";
  $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
  $headers .= 'FROM:' . htmlspecialchars($_POST['email']);
  $to = 'meegolo42@gmail.com'; // Insérer votre adresse email ICI
  $subject = 'Message envoyé par ' . htmlspecialchars($_POST['nom']) .' - <i>' . htmlspecialchars($_POST['email']) .'</i>';
  $message_content = '
  <table>
  <tr>
  <td><b>Emetteur du message:</b></td>
  </tr>
  <tr>
  <td>'. $subject . '</td>
  </tr>
  <tr>
  <td><b>Contenu du message:</b></td>
  </tr>
  <tr>
  <td>'. htmlspecialchars($_POST['message']) .'</td>
  </tr>
  </table>
  ';
mail($to, $subject, $message_content, $headers);
  header('Location: index.html');
  }


Je suppose que dans tout ce code php il y a des choses qui ne doivent pas fonctionner.

Merci de votre aide
Salut,
Le problème n'est pas forcément dans le code.

As tu vérifié que ton hébergeur autorise l'envoi des mails?
C'est souvent bloqué pour éviter les spams.

Sinon, en regardant rapidement le code, je vois une partie
if(array_key_exists('antispam', $_POST)) {// on place un petit filet anti robots spammers
  $errors ['antispam'] = "Vous êtes un robots spammer";
  }
Mais aucun name="antispam" dans le formulaire.
Ça peut créer une erreur qui empêche l'envoi du message.

Mick4553
Bonjour,

Ce qu'entend dire Mick4553 par
Mick4553 a écrit :
aucun name="antispam" dans le formulaire


signifie qu'il faille ajouter une balise INPUT au niveau du code HTML. Celle-ci prendra pour attribut NAME la valeur antispam.

De deux chose; Soit votre système de capcha n'a pas été posté ici mais il existe, alors vérifiez sa syntaxe (NAME="antispam").

Soit il n'est pas encore implémenté dans votre code auquel cas la conditionnelle posée sur la clé antispam est à mettre en commentaire durant les phases de test et jusqu'à l’implémentation du capcha.

Car comme les choses nous sont présentées, votre script fonctionne à la perfection : il remplit la variable $errors et le test sur sa nullité empêche l'envoi du mail.