Bonjour,

Oui vous avez bien lu, je galère avec un formulaire, j'ai juste envie de me mettre une balle...
Pourtant j'ai déjà réussi des formulaires mais cette fois je sèche tout est OK et ce P.... de mail n'arrive pas.

mon form html

<form method="post" >
            <div class="row">
                <div class="input-field col s12 m6">
                    <input type="text" name="prenom" id="prenom" />
                    <label for="prenom">Prénom *</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="text" name="nom" id="nom" />
                    <label for="nom">Nom *</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="number" name="tel" id="tel" />
                    <label for="tel">Tél *</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="email" name="email" id="email" />
                    <label for="email">Email *</label>
                </div>
                <div class="input-field col s12 m12">
                    <input type="text" name="adresse" id="adresse" />
                    <label for="adresse">Adresse</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="number" name="codepostal" id="codepostal" />
                    <label for="codepostal">Code postal *</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="text" name="ville" id="ville" />
                    <label for="ville">Ville</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="text" name="typeproduit" id="typeproduit" placeholder="(parquet, stratifié, vinyle, produits d'entretien...)" />
                    <label for="typeproduit">Type de produit</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="text" name="marque" id="marque" placeholder="BerryAlloc, Quick-Step, Blanchon..."/>
                    <label for="Marque">Marque</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="text" name="reference" id="reference" placeholder="E1CYBMIM, SIG4757..."/>
                    <label for="reference">Référence</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="number" name="surface" id="surface" placeholder="Surface en m²"/>
                    <label for="surface">Surface votre projet</label>
                </div>
                <div class="input-field col s12 m12">
                    <textarea name="comment" id="comment" class="materialize-textarea"></textarea>
                    <label for="comment">Description rapide de votre proje:</label>
                </div>
                <div class="input-field col s12 m6" style="display: none">
                    <input type="number" name="none" id="none"/>
                    <label for="none"></label>
                </div>
                <div class="col s12">
                    <button type="submit" name="submit" class="btn waves-effect">
                        Envoyer
                    </button>
                </div>
            </div>
        </form>

le traitement:

public static function contact(){

        if(isset($_POST['submit'])){

            $none        = htmlspecialchars($_POST['none']);
            $prenom      = htmlspecialchars($_POST['prenom']);
            $nom         = htmlspecialchars($_POST['nom']);
            $tel         = htmlspecialchars($_POST['tel']);
            $email       = htmlspecialchars($_POST['email']);
            $adresse     = htmlspecialchars($_POST['adresse']);
            $codepostal  = htmlspecialchars($_POST['codepostal']);
            $ville       = htmlspecialchars($_POST['ville']);
            $typeproduit = htmlspecialchars($_POST['typeproduit']);
            $marque      = htmlspecialchars($_POST['marque']);
            $reference   = htmlspecialchars($_POST['reference']);
            $surface     = htmlspecialchars($_POST['surface']);
            $comment     = htmlspecialchars($_POST['comment']);
            $errors      = [];

            // Verification que les champs ne sont pas vide
            if (empty($prenom)) {
                $errors['prenom'] = "Il manque votre prénom";
            } 
            if (empty($nom)) {
                $errors['nom'] = "Il manque votre Nom";
            }
            if (empty($tel)) {
                $errors['tel'] = "Il manque votre Numéro de téléphone";
            }
            if (empty($email)) {
                $errors['email'] = "Il manque votre e-mail";
            }
            if (empty($codepostal)) {
                $errors['codepostal'] = "Il manque votre code postal";
            } 
            if (!empty($none)) {
                $errors['none'] = "Désolé...";
            } else {

            // Destinataire
            $to = 'mon@gmail.com';

            $subject = "Sujet";

            // email fields: to, from, subject, and so on

            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-Type: text/html; charset="utf-8"' . "\r\n";
            $headers .= 'Content-Transfer-Encoding: 8bit' . "\r\n";

            $headers .= 'To: <' . $to . '>' . "\r\n";
            $headers .= 'From: ' . $nom . ',' . $prenom . ', ' . $email . "\r\n";

            //Message HTML
            $message = '
             <html lang="fr" style="font-family: sans-serif;">
                <head>
                     <meta charset="utf-8">
                </head>
                <body>
                <h4>Message reçu du formulaire de contact monparquet.shop</h4>
                <p>Prénom :'. $prenom .'.</p>
                <p>Nom : '. $nom .'</p>
                <p>téléphone : '. $tel . '</p>
                <p>E-mail : '. $email . '</p>
                <p>Adresse : ' . $adresse .'</p>
                <p>Code postal :' . $codepostal .'</p>
                <p>Ville : ' . $ville .'</p>
                <p>Type de produit : ' . $typeproduit .'</p>
                <p>Marque : ' . $marque . '</p>
                <p>Référence : ' . $reference . '</p>
                <p>Surface : ' . $surface . '</p>
                <p>Description rapide : <br> '. $comment .'</p>

                </body>
            </html>';

            // Envoie du mail
            mail($to, $subject, $message,  $headers);
            var_dump($to);

            }

            if (!empty($errors)) {
                require 'pages/includes/error.php'; 
            } else {
                require 'pages/includes/ok.php';

            }     

        }

        require './pages/devis.php';

    }

Il y a un blocage que je ne vois pas il est sous mes yeux et quand on va me dire le PB je vais avoir bien honte...

Merci de votre aide

4 réponses


bonjour.
la fonction mail renvoie un boolean pour savoir si l'envoi s'est bien déroulé. il serait bien de tester ce retour.
ensuite tu as deux fois la même ligne de code pour $header. d'ailleurs la 1ère ne sert à rien car elle est écrasée juste après le commentaire.
désolé j'écris par le tel et c'est difficile sans copier le code.

Merci pour ta réponse rapide.
J'ai supprimer le premier Headers, puis effectué un test sans les balise html $message.
Dans mon var_dump(); et je passe mes variables les valeurs sont bien récupérées, sur un serveur distant OVH MUT, ou d'autres sites mais CMS tournent.

Je me réponds à moi même et pour ceux qui serait intéressé.
La solution est d'avoir FROM: dans la fonction mail();
donc à la place de: mail($to, $subject, $message, $headers);
remplacer par:
mail($to, $subject, $message, 'From: Provenance du mail');

super, tu peux passer ton sujet en résolu, merci