j'ai créer un formulaire en HTML avec un fichier complémentaire .php

Ce que je veux

il faudrait que quand je clique sur envoyer cela envoi un mail et que le formulaire se vide vu que c'est envoyé

Ce que j'obtiens

le formulaire a la forme, je le met en ligne, mais quand je fais le test, quand je clqiue sur le bouton envoyer, rien ne se passe.

9 réponses


Melissia
Auteur

code utilisé :

html :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formulaire de Contact</title>
</head>
<body>
<h2>Formulaire de Contact</h2>
<form action="send_email.php" method="POST">
<label for="name">Nom :</label><br>
<input type="text" id="name" name="name" required><br><br>

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

    <label for="message">Message :</label><br>
    <textarea id="message" name="message" rows="4" cols="50" required></textarea><br><br>

    <button type="submit">Envoyer</button>
</form>

</body>
</html>

le fichier contact.php :

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Récupérer les données du formulaire
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars($_POST['email']);
$message = htmlspecialchars($_POST['message']);

// Destinataire
$to = "toto@toto.fr";

// Sujet de l'email
$subject = "Nouveau message de contact de $name";

// Contenu de l'email
$body = "Nom: $name\n";
$body .= "Email: $email\n\n";
$body .= "Message:\n$message\n";

// En-têtes de l'email
$headers = "From: $email" . "\r\n" .
           "Reply-To: $email" . "\r\n" .
           "X-Mailer: PHP/" . phpversion();

// Envoyer l'email
if (mail($to, $subject, $body, $headers)) {
    echo "Votre message a été envoyé avec succès.";
} else {
    echo "Une erreur est survenue lors de l'envoi de votre message.";
}

}
?>

quand je clique sur envoyer rien ne se passe

le traitement se fait sur le fichier "send_email.php" et non "contact.php"

Melissia
Auteur

merci de votre réponse, j'ai modifié, mais cela ne change pas le problème, c'est toujours pareil quand je clmique sur envoyer rien ne se passe du tout

je ne vois pas d'erreur dans le code.
un message d'erreur dans les logs ?

Le site est bien hébergé en ligne et pas en local pour le test ?
La fonction mail() est bien activée chez l'hébergeur ?
Le courrier arrive t'il dans les spam ?...

Un tuto qui peut vous aider :
https://www.hostinger.fr/tutoriels/php-mail

Melissia
Auteur

bonjour, oui je suis hebergé sur OVH
je l'ajoute a mon site internet qui est dessus.

quand je fait mon message et que j'envoi cette fois ca fat comme ci ça avait envoyé car ça efface bien tout le formulaire il devient vide, mais je ne reçois rien et je n'ai aucun message d'erreur.

commen,t je peux voir sur OVH si la fonction mail est activé ?

Il suffit d'envoyer un fichier test.php sur ton serveur avec dedans :

<?php
phpinfo();
?>

Ensuite tu peux y accéder par : adresse-de-ton-site/test et voir si les directives "sendmail_from" ou "sendmail_path" sont biens définies et qu'il n'y a pas écrit "disable" ou autre chose du genre.

Par exemple moi j'ai ça :

sendmail_from me@localhost.com me@localhost.com
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i

C'est fonctionnel mais le mieux est d'y associer une vraie adresse pour ne pas être rejeté directement ou arriver dans les spams...

penser à utiliser le site "mail-tester.com" pour verifier que vos mails ne sont pas détruit avant d'arriver dans la boite mail.

Melissia
Auteur

merci pour vos réponse
je vais tester ça dès que je le peux