Partage
  • Partager sur Facebook
  • Partager sur Twitter

Classe PHPMailer

Changer l'expéditeur

Sujet résolu
    25 août 2021 à 16:40:56

    Bonjour,

    Je viens de commencer mon stage et je dois faire en sorte de modifier l'en tête de mon mail afin que l'expéditeur change. Le problème est que je n'arrive pas à envoyer de mail avec un autre FROM que celui renseigner de base. Lorsque je met ce code : 

    <?php
    
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;
    use PHPMailer\PHPMailer\SMTP;
    
    require 'Exception.php';
    require 'PHPMailer.php';
    require 'SMTP.php';
    
    $mail = new PHPMailer(true);
    
    try{
    
    $mail->SMTPDebug=SMTP :: DEBUG_SERVER;
    
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';               //Adresse IP ou DNS du serveur SMTP
    $mail->SMTPAuth = true;                        //Utiliser l'identification
    $mail->Username   =  'User@MAIL';   //Adresse email à utiliser
    $mail->Password   =  'Mdp@MAIL.';
    $mail->From="MailFrom";        //Mot de passe de l'adresse email à utiliser
    $mail->SMTPSecure = 'tls';
    
    $mail->setFrom('MailFrom', 'AliasFrom');
    
    $mail->AddAddress('MailTo');
    $mail-> addReplyTo ( 'MailFrom' , 'AliasFrom' );
    
    $mail->IsHTML(true);
    $mail->Subject    =  'Bonjour';                      //Le sujet du mail
    $mail->AltBody = 'Salut mec';       //Texte brut
    $mail->Body = 'This is the HTML message body';       //Préciser qu'il faut utiliser le texte brut
    
    $mail -> send();
          echo 'Le message est envoyé';
    } catch (Exception $e){
          echo 'Erreur messagerie';
    }
    ?>

    Cela m'affiche bien l'AliasFROM mais pas l'adresse mail FROM, cela m'affiche mon adresse gmail à moi. Quelqu'un aurait la solution?

    Cordialement

    • Partager sur Facebook
    • Partager sur Twitter
      25 août 2021 à 17:29:46

      Bonjour,

      Doublon

      Les doublons nuisent au bon fonctionnement du forum et sont donc interdits.

      La discussion a commencé sur ce sujet : https://openclassrooms.com/forum/sujet/mail-avec-php

      Une réponse vous a été donné par l'équipe de modération, en aucun cas la communauté OpenClassrooms nous vous aidera à faire un code malveillant, cf. les Règles générales du forum.

      En quoi ce sujet est-il différent du précédent ?

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        26 août 2021 à 9:19:17

        Ceci n'est pas différent mais je pensais que sur le dernier je ne pouvais plus répondre vue qu'il était fermé. Ce n'est en aucun cas un code malveillant mais c'est pour sensibiliser les personnes fragile de notre entreprise afin qu'on puisse leur faire un retour et de bien vérifier les mails que l'on reçoit même si l'adresse nous parait familière.
        • Partager sur Facebook
        • Partager sur Twitter
          26 août 2021 à 16:41:56

          AbcAbc6 a écrit:

          >> Quelqu'un aurait la solution ??

          Utiliser une autre adresse mail d'envoi

          https://stackoverflow.com/questions/13918999/how-to-change-envelope-sender-address-using-phpmailer

          -
          Edité par Benzouye 26 août 2021 à 16:44:31

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            26 août 2021 à 17:18:46

            Lorsque je fais ceci, comme on peut le voir dans mon code, j'utilise une adresse mail d'envoie gmail. Et le problème c'est que ca me mets bien l'ALIAS que je veux mais cela ne change pas l'adresse. Je te montre dans l'en-tête ce que cela donne. 

            From: ALIAS <USER@gmail.com> c'est ce qui s'affiche

            X-Google-Original-From: ALIAS <MailFrom> Ce que j'aimerais qui s'affiche

            Je ne comprend pas pourquoi il y a un en-tete en plus avec X-Google-Original-From.

            • Partager sur Facebook
            • Partager sur Twitter
              26 août 2021 à 17:30:04

              Ton code ne fait que demander au serveur SMTP de Google (Gmail) d'envoyer l'email souhaité, il est donc normal que Google en assure l'authenticité pour ne pas être accusé de favoriser le phishing ...

              Si tu es vraiment dans une phase de test, crée une adresse bidon sur le serveur mail de ta boîte et utilise leur SMTP pour envoyer tes mails ...

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                27 août 2021 à 9:00:56

                Mais ce n'est pas possible de cacher ou de remplacer cette adresse bidon ?
                • Partager sur Facebook
                • Partager sur Twitter
                  27 août 2021 à 9:22:48

                  Pas avec le SMTP de Google, qui sécurise ses envois, il faut utiliser un autre serveur de mail ... peut-être que le SMTP de ta boîte le permettra ...

                  Tu peux aussi utiliser la fonction mail() de PHP plus simple et qui utilisera le SMTP de ton serveur de façon transparente. Mais cette fonction n'est pas adaptée pour l'envoi d'email en masse ...

                  -
                  Edité par Benzouye 27 août 2021 à 9:23:23

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                    27 août 2021 à 9:37:10

                    Ou sinon je peux moi-même faire un serveur smtp non? 

                    Sur un serveur virtuelle sur ma machine je pourrais faire ça non?

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 août 2021 à 11:27:22

                      LouisNimbert a écrit:

                      Ou sinon je peux moi-même faire un serveur smtp non?

                      Benzouye a écrit:

                      Tu peux aussi utiliser la fonction mail() de PHP plus simple et qui utilisera le SMTP de ton serveur de façon transparente

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                        27 août 2021 à 11:51:10

                        J'essaye ça Lundi quand mon maître de stage reviendra

                        Je te tiens au courant si cela fonctionne ;)

                        Merci de ton aide

                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 septembre 2021 à 15:58:09

                          Bonjour,

                          Mon maître de stage est revenue mais avec la fonction mail j'ai une erreur qui est celle-ci : 

                          PHP Warning:  mail(): SMTP server response: 530 5.7.0 Must issue a STARTTLS command first

                          Cordialement

                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 septembre 2021 à 18:18:53

                            Donc tu peux utiliser le SMTP de ton serveur ...

                            Donc tu peux utiliser PHPMailer avec non ?

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                              2 septembre 2021 à 9:37:09

                              Oui mais que faut-il mettre dedans ? Il faut s'identifier ? Si oui avec quel adresse ?

                              J'ai donc remarqué que notre SMTP me bloquait si je ne mettais pas d'authentification...

                              -
                              Edité par LouisNimbert 2 septembre 2021 à 11:10:46

                              • Partager sur Facebook
                              • Partager sur Twitter
                                2 septembre 2021 à 12:23:26

                                LouisNimbert a écrit:

                                J'ai donc remarqué que notre SMTP me bloquait si je ne mettais pas d'authentification.

                                C'était expliqué indirectement dans le warning vu plus haut ...

                                LouisNimbert a écrit:

                                que faut-il mettre dedans ?

                                C'est à voir avec ton maître de stage ou l'admin système de ta boîte.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                  2 septembre 2021 à 13:54:54

                                  D'accord, je lui en parlerais ;)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    9 septembre 2021 à 16:21:38

                                    Bonjour,

                                    Je passe donc par u serveur Postfix et je peux donc l'envoyer avec le nom de domaine et le nom d'utilisateur que je soouhaite. Connaissez-vous un moyen de ne pas apparaître comme SPAM ? 

                                    Cordialement

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      9 septembre 2021 à 18:15:19

                                      LouisNimbert a écrit:

                                      Connaissez-vous un moyen de ne pas apparaître comme SPAM ?

                                      C'est que la DSI de ta boîte fait bien son boulot ... en tout cas pour cet exemple ... et que le serveur mail détecte ton envoi comme du spam.

                                      Encore une fois si tu veux créer une exception pour tes tests voit avec l'admin du serveur mail pour qu'il crée cette exception ...

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                        13 septembre 2021 à 9:10:34

                                        Je vois mais mon maître de stage me demande de faire comme si j'étais extérieur à l'entreprise, pour que cela soit encore plus réaliste et qu'il puisse voir comment les gens font pour ne pas apparaître en SPAM.

                                        Vous ne connaissez aucun autre moyen ?

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          17 septembre 2021 à 15:30:33

                                          Bonjour,

                                          J'ai donc réussi à faire ce que je voulais, j'aimerais savoir s'il serait possible de connaître le nom du PC qui clique sur mon lien ou l'email qui clique sur ma pièce jointe afin de faire des statistiques pour l'entreprise ! J'aimerais qu'une fois qui clique une page HTML s'affiche en leur disant qu'ils se sont fait avoir par quelqu'un du service informatique et le sensibiliser sur ce qu'on peut faire sur internet. Mais avant que cette page s'affiche, j'aimerais récupérer les noms des personnes et le nombre qui ont cliqué.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            17 septembre 2021 à 16:53:08

                                            Pour cela, le plus simple c'est de prendre le principe des systèmes de mailing (type MailChimp ou SendInBlue).

                                            Tous les liens dans le contenu du mail sont dynamiques.

                                            En gros le programme qui construit le mail et l'envoi part d'une liste d'adresses emails destinataires. Chaque email envoyé se voit affecter un numéro unique (par exemple avec uniqid en PHP) et le programme stocke en base de données ce numéro, et l'adresse email associée. Dans le contenu du mail, tous les liens reprennent en variable ce numéro, exemple :

                                            <a href="https://monserveur.com/retourmail.php?id=ad454sd8dds1cd58egb168" title="Cliquer ici pour accéder au site">Cliquer ici pour changer votre mot de passe</a>

                                            Lorsque l'utilisateur clique sur le lien dans le mail, la page retourmail.php lit la variable $_GET['id'], retrouve la ligne correspondante en base et renseigne que le lien a été cliqué avec éventuellement la date et l'heure ... Ensuite tu peux afficher le message que tu veux ...

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                              21 septembre 2021 à 9:15:40

                                              Il n'y a pas moyen de faire cela seul ? C'est trop difficile ?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                21 septembre 2021 à 13:18:55

                                                Seul ? C'est à dire ? Tu as un serveur web avec PHP dessus non ? Tu peux donc coder "facilement" ce que je décris juste avant ?

                                                J'ai bien dis "reprendre le principe" je n'ai pas dis d'utiliser MailChimp ou SendInBlue ...

                                                -
                                                Edité par Benzouye 21 septembre 2021 à 13:19:39

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                                  22 septembre 2021 à 9:25:42

                                                  D'accord donc je regarde ca dans la journée pour savoir comment faire ça et je vous tiens au courant demain. En tout cas merci de m'aider dans mon projet.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    22 septembre 2021 à 12:31:05

                                                    Tu as bien un programme qui envoie les emails (cf. ton premier message), dans ce fichier PHP tu peux également traiter la génération du lien à cliquer dans le contenu de l'email, ainsi que le retour du clic ...

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                                      24 septembre 2021 à 9:35:47

                                                      Oui je viens de créer une base de donnnées avec toutes les adresses + une valeur pour savoir si ils ont cliqué ou non, et si il clique sur le lien ca change cette valeur directement dans la BDD. Tu penses que cela fonctionnera comme ça? Ou il faut que je rajoute un champ id ?
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        24 septembre 2021 à 12:15:30

                                                        LouisNimbert a écrit:

                                                        il faut que je rajoute un champ id ?

                                                        C'est mieux car cela évite de passer l'adresse email dans le les variables GET du lien dans le contenu du message ... Mais cela fonctionnera aussi avec l'email ...

                                                        Après je stockerai un DATETIME pour la colonne "cliqué ou non". Si pas cliqué alors NULL sinon un DATETIME.

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                                          24 septembre 2021 à 12:20:30

                                                          D'accord je vais changer tout ça. Je reviens vers toi quand j'ai fais tout cela !
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            1 octobre 2021 à 9:18:38

                                                            Bonjour, 

                                                            Et donc pour pouvoir requêté la BDD, il faudrait donc une variable (email) et renseigner l'email de la personne dedans. Une fois cela fait on cherche dans la BDD pour lui donner l'id correspondante, c'est ca?

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              1 octobre 2021 à 10:03:57

                                                              Je créerai une base de données avec une seule table :

                                                              CREATE TABLE email (
                                                              	email VARCHAR(255) NOT NULL,
                                                              	token VARCHAR(23) NOT NULL,
                                                              	date_envoi DATETIME NULL,
                                                              	date_click DATETIME NULL
                                                              );

                                                              Tu insères dans cette table les emails que tu veux tester avec dans la colonne token une chaîne unique (type uniqid avec PHP).

                                                              Lorsque tu envoies le mail tu mets à jour la colonne date_envoi et le mail doit avoir en contenu un lien <a> avec le token en variable dans href.

                                                              Lorsque l'utilisateur clique sur le lien la page de destination récupère la variable token et met à jour la base de données pour ce token ...

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter
                                                              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                                                              Classe PHPMailer

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown