PHP

Envoi d'e-mails

Non Résolu

Bonjour,

Cela faisait un certain temps que j'avais pas testé mon formulaire de contact et je viens de me rendre compte que je ne reçois aucun e-mail quand je le remplie.

Si vous pouvez m'aider à trouver mon erreur, je suis preneur.

Merci d'avance


Voici mon code :

<form method="post">
    	<input type="email" name="email" placeholder="Votre e-mail" required><br>
     	<input type="subject" name="sujet" placeholder="Sujet" required><br>
  		<textarea name="message" placeholder="Votre message" required></textarea><br>
  		<input type="submit" value="Envoyer" id="bouton_d_envoi">
	    <style>#bouton_d_envoi {font-size: 1.5em; background-color: #DCDCDC;} #bouton_d_envoi:hover {background-color: #0053FF; color: #FFFFFF;cursor: pointer; transition: 0.3s ease-in-out;}</style>
    </form>
    <?php
        if (isset($_POST['message'])) {
            $position_arobase = strpos($_POST['email'], '@');
            if ($position_arobase === false)
                echo '<p>Votre e-mail doit comporter un arobase.</p>';
            else {
                $retour = mail('***@gmail.com', $_POST['sujet'], $_POST['message'], 'From: ' . $_POST['email']);
                if($retour)
                    echo "<p>Votre message a été envoyé avec succès.</p>"; 
                else
                    echo "<p>Echec de l'envoi.</p>";
            }
        }
    ?>
1123 vues
05 mai 2021 à 22:34 (Édité)
Cette pub permet au site de vivre ...

13 commentaires

Re:


Nous avons reçu aucune réponse de ta part, je ferme ce topic !

La prochaine fois, pense à répondre, cela nous permettrai de t'aider plus rapidement et de nous permettre de gagner du temps, sachant qu'il n'y a pas que toi qui a besoin d'aide 😉

Bonjour @gros-problemes :


On attend une réponse de ta part...

Les réponses apportées ont-elles pu t'aider à résoudre ton problème ? 🤔

Re @gros-problemes :


as-tu installé composer dans tes fichiers, normalement si tu as fais cela correctement, tu devrais avoir un dossier vendor qui s'est installé ?

Hello @gros-problemes,


Pour ma part, le seul tuto dont je me suis basé pour réaliser des formulaires de contact est celui-ci 😉 Il existe également avec pièce jointe 😉

Bonjour à tous,

Aucun e-mail ne peut être envoyer grâce à mon code. En effet, dès que je remet les deux lignes ci-dessous dans mon code, la page fait une HTTP ERROR 500 et je ne peux plus y accéder.

Pouvez-vous me dire si je dois modifier quelque chose dans ces deux lignes ?

Merci d'avance

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

Re @Flomir

Pour le mot de passe, j’avais fait exprès de ne pas le partager et pour les conditions, je les ai mises aux lignes 10 et 11.

Merci

Re @gros-problemes 😆,


Normalement cela devrait fonctionner mais n'oublie pas de mettre le mot de passe de ton compte Google et aussi à créer les conditions if(isset que je t'ai mis en dessous.

Merci beaucoup @Flomir, ton aide m'est précieuse.

Je ne peux pas tester immédiatement mon code mais avec le suivant cela devrait fonctionner ?


<form method="post">
	    <input type="text" name="nom" placeholder="Votre nom" required><br>
    	<input type="email" name="email" placeholder="Votre e-mail" required><br>
     	<input type="subject" name="sujet" placeholder="Sujet" required><br>
  		<textarea name="message" placeholder="Votre message ici..." required></textarea><br>
  		<input type="submit" name="contact" value="Envoyer" id="bouton_d_envoi">
	    <style>#bouton_d_envoi {font-size: 1.5em; background-color: #DCDCDC;} #bouton_d_envoi:hover {background-color: #0053FF; color: #FFFFFF; cursor: pointer; transition: 0.3s ease-in-out;}</style>
    </form>
<?php
if(isset($_POST['contact'])){
    if(isset($_POST['nom']) && isset($_POST['sujet']) && isset($_POST['message']) && isset($_POST['email'])){
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\Exception;


require $_SERVER['DOCUMENT_ROOT'] . '/mail/Exception.php';
require $_SERVER['DOCUMENT_ROOT'] . '/mail/PHPMailer.php';
require $_SERVER['DOCUMENT_ROOT'] . '/mail/SMTP.php';


$mail = new PHPMailer;
$mail->isSMTP(); 
$mail->SMTPDebug = 2;
$mail->Host = "smtp.gmail.com";
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = 'quentin.boyer1530@gmail.com';
$mail->Password = 'monmdp';
$mail->setFrom($_POST['email'], $_POST['nom']);
$mail->addAddress('quentin.boyer1530@gmail.com', 'M. Boyer');
$mail->Subject = $_POST['sujet'];
$mail->msgHTML($_POST['message']);
$mail->AltBody = 'HTML messaging not supported';
$mail->SMTPOptions = array(
                    'ssl' => array(
                        'verify_peer' => false,
                        'verify_peer_name' => false,
                        'allow_self_signed' => true
                    )
                );
if(!$mail->send()){
    echo "Echec de l'envoi. Erreur :" . $mail->ErrorInfo;
}else{
    echo "Votre message a été envoyé avec succès.";
}
       }
   }
   
?>

Re: @gros-problemes 😁


Alors déjà il faut savoir que tu ne vérifies pas dans ce code si tu agis sur le bon formulaire,

Pour cela tu donnes un name à ton input de type submit par exemple tu l'appelles contact.

Avant tout de chose il faut bien faire un :


<?phpif(isset($_POST['contact'])){
       // Là tu vérifies que tu es sur le bon formulaireif(isset($_POST['sujet']) && isset($_POST['message']) && isset($_POST['email'])){
       // Là tu vérifies que tu as bien toutes les informations renseignées et si oui tu peux envoyer un mail
       }
   }


Et tu as juste à remplacer le mail et son mot de passe Google :


$mail->Username = 'youremail@gmail.com'; // email
$mail->Password = 'PASSWORD'; // password


Ensuite, c'est que du bon sens.

Setfrom: de qui

Addadress (to): à qui.


En l'occurrence, setfrom va être si je ne me trompe pas, l'utilisateur qui t'envoie le message, donc pour récupérer son email c'est :


$_POST['email']


Et du coup c'est grâce au addadress que tu mets ton mail et ton nom.

Le debug tu le laisses jusqu'à temps que tu arrives à envoyer un mail. Si tu as un échec c'est soit que tu n'as pas accepté un droit d'accès à ton compte (comme dit dans le tutoriel), soit que tu as une erreur de mot de passe ou d'erreur quelconque dans tes informations..

Je te conseille de tester avec deux mails pour essayer de comprendre. En tout cas j'ai fais comme ça, et après une fois que j'ai compris, ça a été tout seul hé hé 😂


Après une demi-heure de rédaction et de réflexion, j'espère t'avoir aidé, en tout cas j'ai essayé d'être clair pour te rendre la tâche plus simple 😀


Sur ce bon courage😆

Salut @Flomir

Je viens d'essayer le tuto et j'en suis à l'étape d'insérer le code PHP mais je ne sais pas ce que je dois modifier pour que les mails s'envoient sur ma boite mail avec l'aide du formulaire donc si toi ou quelqu'un d'autre peut m'aider svp.

Merci d'avance


Je remet la partie de mon code lié au formulaire de contact :

<footer>
		<h5>Me Contacter</h5>


	<form method="post">
    	<input type="email" name="email" placeholder="Votre e-mail" required><br>
     	<input type="subject" name="sujet" placeholder="Sujet" required><br>
  		<textarea name="message" placeholder="Votre message ici..." required></textarea><br>
  		<input type="submit" value="Envoyer" id="bouton_d_envoi">
	    <style>#bouton_d_envoi {font-size: 1.5em; background-color: #DCDCDC;} #bouton_d_envoi:hover {background-color: #0053FF; color: #FFFFFF; cursor: pointer; transition: 0.3s ease-in-out;}</style>
    </form>
    
    <?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;


require $_SERVER['DOCUMENT_ROOT'] . '/mail/Exception.php';
require $_SERVER['DOCUMENT_ROOT'] . '/mail/PHPMailer.php';
require $_SERVER['DOCUMENT_ROOT'] . '/mail/SMTP.php';


$mail = new PHPMailer;
$mail->isSMTP(); 
$mail->SMTPDebug = 2; // 0 = off (for production use) - 1 = client messages - 2 = client and server messages
$mail->Host = "smtp.gmail.com"; // use $mail->Host = gethostbyname('smtp.gmail.com'); // if your network does not support SMTP over IPv6
$mail->Port = 587; // TLS only
$mail->SMTPSecure = 'tls'; // ssl is deprecated
$mail->SMTPAuth = true;
$mail->Username = 'youremail@gmail.com'; // email
$mail->Password = 'PASSWORD'; // password
$mail->setFrom('system@cksoftwares.com', 'CKSoftwares System'); // From email and name
$mail->addAddress('to@address.com', 'Mr. Brown'); // to email and name
$mail->Subject = 'PHPMailer GMail SMTP test';
$mail->msgHTML("test body"); //$mail->msgHTML(file_get_contents('contents.html'), __DIR__); //Read an HTML message body from an external file, convert referenced images to embedded,
$mail->AltBody = 'HTML messaging not supported'; // If html emails is not supported by the receiver, show this body
// $mail->addAttachment('images/phpmailer_mini.png'); //Attach an image file
$mail->SMTPOptions = array(
                    'ssl' => array(
                        'verify_peer' => false,
                        'verify_peer_name' => false,
                        'allow_self_signed' => true
                    )
                );
if(!$mail->send()){
    echo "Mailer Error: " . $mail->ErrorInfo;
}else{
    echo "Message sent!";
}
?>
</footer>
Cette pub permet au site de vivre ...
1
2