Bonjour,

Suite à la perte la semaine précédente du site internet de l'entreprise dans laquelle je travaille, et avant de faire refaire un site correct, nous souhaitons mettre en ligne une page simple "d'urgence" pour ne pas avoir une page blanche.
J'ai donc lu plusieurs tutoriels (ici et sur developpez) et j'ai fait appel à 2 IA (LE CHAT et BLACKBOX) pour faire une structure responsive simple, comportant un header, une bannière, un menu latéral, un contenu en 3 colonnes et un formulaire de contact de 3 zones de texte ("Name", "Email", "Message").
La première IA (LE CHAT) m'a également fourni un script JS pour la vérification des données et un script php pour l'envoi du mail. Il semblerait que dans cette première mouture du PHP, il manquait l'instruction d'envoi (mail).
J'ai donc regarder plusieurs autres forums, les tuto, et passer une petite heure avec notre hébergeur.
J'ai essayé 4 autres scripts et aucun ne fonctionnent. Avec les 2 derniers scripts, j'ai enlevé le javascript de vérification, qui à priori n'est pas nécessaire.

Voici le code html en question :
 <div class="contact" id="CONTACT">
                <h1>Contactez-nous</h1>
                    <form id="contactForm" action="send_email.php" method="post">
                     <label for="name">Nom:</label>
                     <input type="text" id="name" name="name" required>

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

                     <label for="message">Message:</label>
                     <textarea id="message" name="message" required></textarea>

                     <button type="submit">Envoyer</button>
                    </form>
                 <div id="responseMessage"></div>

et voici le dernier script PHP :
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Collect and sanitize input data
    $name = htmlspecialchars(trim($_POST['name']));
    $email = htmlspecialchars(trim($_POST['email']));
    $message = htmlspecialchars(trim($_POST['message']));

    // Validate input data
    if (empty($name) || empty($email) || empty($message)) {
        die("Merci de compléter entièrement le formulaire.");
    }

    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        die("L'adresse mail n'est pas valide.");
    }

    // Set the recipient email address
    $to = "chazelle.imp@wanadoo.fr"; // Replace with your email address
    $subject = "Message depuis chazelleimprimeurs.com";
    $body = "Name: $name\nEmail: $email\nMessage:\n$message";
    $headers = "From: $email";

    // Send the email
    if (mail($to, $subject, $body, $headers)) {
        echo "Email envoyé !";
    } else {
        echo "L'email n'a pas été envoyé";
    }
} else {
    echo "Demande invalide";
}
?>


Chacun des scripts PHP vu ou testé étant assez différents, il m'est impossible de comprendre pourquoi cela ne fonctionne pas.
Quelqu'un peut-il m'éclairer ?

Merci.
Bonjour,
avant de se plonger dans le code, il faut savoir que de plus en plus d'hébergeurs n'acceptent plus les scripts de la fonction mail de php. J'en ai fait les frais récemment. Il faut passer par PHPMail ou une autre application.
Aussi, mais je ne crois pas que ce soit le cas ici, les pages en hébergement gratuit "free pages perso" n'acceptent pas les SMTP extérieurs (le php chez eux est de toute façon limite).
Avez-vous essayé PHPMail, on en a parlé dernièrement sur ce forum.
Bonjour,
Tout d'abord merci de votre réponse.
notre hébergeur est IONOS.
Un conseiller m'a affirmé que la fonction n'était pas bloquée. Mais il est vrai que j'ai eu la nette impression d'avoir face à moi quelqu'un d'encore moins compétent que moi.
Non, je n'ai pas essayé PHPMail. J'ai vu ce nom plusieurs fois, mais je privilégiais les solutions qui me paraissaient les plus simples, peut-être à tord.
Est-ce simple à mettre en place ?
Bonjour,
simple à mettre en place, c'est une réponse toujours difficile. Tout dépend de son expérience en php.
N'étant pas un cador en php, j'ai dû demander quelques conseils (ici), mais maintenant, ça fonctionne.
https://github.com/PHPMailer/PHPMailer
Pour l'installer, ensuite, vous demanderez des conseils au fur et à mesure de l'avancement.
Bonjour, le script renvoie sur votre serveur "L'email n'a pas été envoyé".
Vérifier auprès de votre hébergeur si la fonction mail est bien active puisque celle-ci vous retourne false.
Sinon votre hébergeur met à votre disposition une documentation pour PHPMailer
https://www.ionos.fr/digitalguide/email/aspects-techniques/phpmailer/

Édit : En consultant la documentation de votre hébergeur, vous constaterez qu'il n'est pas possible d'envoyer un mail avec une adresse différente que celle de votre hébergement.
https://www.ionos.fr/assistance/hebergement/aucun-envoi-de-mails-avec-une-adresse-dexpediteur-differente/
Suivez les recommandations de votre hébergeur, soit :
a écrit :
assurez-vous dans votre script PHP que l'adresse d'expéditeur "From" inscrite dans $headers appartient au domaine de votre contrat d'hébergement Web sur lequel le script est exécuté.

Modifié par casper2 (11 Apr 2025 - 22:39)