Symfony 4: config Swift Mailer & SMTP...

Symfony 4: config Swift Mailer & SMTP... - PHP - Programmation

Marsh Posté le 28-02-2018 à 20:23:47    

Bonsoir!

 

Je suis sur le dev d'une petite app sous Symfony 4, mais je galère pour un simple envoi mail :D

 

J'ai ien mon bundle (composer require mailer)

 

Mon controller ressemble à ça:

   /**
     * @Route("/contact", name="contact_handling" )
     */
    public function contactHandler(Request $request,  \Swift_Mailer $mailer)
    {
        $contact = new Contact();
        $form = $this->createForm(ContactType::class, $contact);

 

       $form->handleRequest($request);

 

       if ($form->isSubmitted() && $form->isValid()) {

 


            $message = (new \Swift_Message('Hello Email'))
                ->setSubject('Sujet Test')
                ->setFrom('send@example.com')
                ->setTo('mailperso@hotmail.fr')
                ->setBody("plopppp mail" );

 

           $mailer->send($message);

 

           $contact = $form->getData();
            return $this->redirectToRoute('landing_page');
        }

 

       return $this->redirectToRoute('landing_page');

 

   }

 


et dans le fichier .env, j'ai testé plein de config, y compris avec un compte mailjet gratuit:

 

MAILER_URL=gmail://monmailgmail@gmail.com:monpwdgmail@localhost?encryption=tls&auth_mode=oauth
#MAILER_URL=smtp://monapikeymailjet:monapisecretmailjet@in-v3.mailjet.com:25
#MAILER_URL=smtp://localhost:25?encryption=&auth_mode=
#MAILER_URL=smtp://localhost:25?encryption=ssl&auth_mode=login&username=&password=
#MAILER_URL=smtp://monmailperso@hotmail.fr:monpwdperso@smtp-mail.outlook.com:587/?timeout=60&encryption=tls&auth_mode=login

 

Marche paaaaas  [:kaio]

 

J'ai même désactivé le firewall pour m'ôter d'un doute, ports 25/587...

 

Et en bonus la profiler toolbar m'aid epas, elle apparaît bien, mais au clic (où que ce soit), ça m'affiche une page blanche  :sweat:

 

Euh, help?  [:gaga jap]

Message cité 1 fois
Message édité par potemkin le 28-02-2018 à 20:25:53
Reply

Marsh Posté le 28-02-2018 à 20:23:47   

Reply

Marsh Posté le 28-02-2018 à 23:10:16    

Question bête : est-ce que tu arrives à envoyer un mail en utilisant juste la fonction mail() dans un script php tout simple ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-03-2018 à 12:44:55    

:jap: Je viens de tester, ça lève une exception logique puisque je réalise que les params smtp utilisés par la fonction mail() sont tirés du php.ini.

 

Sauf que, selon mes recherches, ça ne supporte pas d'authentification, je ne peux rien tester à moins de monter un server mail local (ce que j'aurais volontiers fait, mais le souci se reposerait en prod, autant donc arriver à faire marcher Swift... :/).


Message édité par potemkin le 01-03-2018 à 12:45:19
Reply

Marsh Posté le 01-03-2018 à 14:08:43    

Si t'as pas de serveur de mail sur ta machine, comment Swift arrive à envoyer un mail (quand bien même il cherche à passer par gmail ou autre pour envoyer sur le réseau) :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-03-2018 à 14:09:45    

En utilisant un serveur externalisé, c'est justement l'intérêt :??:

Reply

Marsh Posté le 01-03-2018 à 15:28:13    

Non mais comment ta requête SMTP arrive à partir de ton serveur vers celui qui va réellement envoyer le mail ? En gros, comment ton mail part de ton serveur vers celui de gmail par ex ? C'est Swift qui embarque son propre petit relai SMTP ?


Message édité par rufo le 01-03-2018 à 15:28:47

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-03-2018 à 15:35:25    

J'ai eu le même problème que toi il n'y a pas longtemps:
 
De base tu n'as pas absolument besoin d'avoir un server mail en local pour l'envoi des mails sur internet, mais tu dois pouvoir te connecter à un server SMTP (comme le font les clients mail comme Outlook ou Thunderbird) que ce soit celui d'un FAI ou d'un service mail comme Google.
 
 perso la dernière fois j'ai résolu le problème en utilisant le smtp de google via mon compte gmail et en autorisant la connexion à mon compte via simple authentification.
Je ne sais plus où j'ai parametré ca exactement, mais c'était sur mon compte gmail
une piste : https://galleryserverpro.com/use-gm [...] ification/
 
Par la suite, dans ton code tu dois configurer la connection sans tls, pour que l'envoi des mails fonctionne
 
Après le problème c'est que tu dois metttre tes identifiants gmail en clair dans ton code, ce qui n'est pas génial, donc pour moi c'est plus une solution de secours à court terme.
 
 
 
En fait le mieux c'est d'utiliser un petit server mail local qui servira de relais smtp local (c'est pensé pour)
 
http://mailslurper.com/
https://mailtrap.io/
 
et il y 'en a d'autres
 
UPdate: et je pense qu'il faut que l'extension php OpenSSL soit activée pour que ca fonctionne


Message édité par tompouss le 01-03-2018 à 16:12:42
Reply

Marsh Posté le 01-03-2018 à 16:26:19    

potemkin a écrit :

Bonsoir!
 
 
 
Et en bonus la profiler toolbar m'aid epas, elle apparaît bien, mais au clic (où que ce soit), ça m'affiche une page blanche  :sweat:
 
Euh, help?  [:gaga jap]  


 
ce sera pas betement dû à adblock ou un antivirus ?


---------------
collectionneur de pâtes thermiques
Reply

Marsh Posté le 01-03-2018 à 19:08:16    

tompouss a écrit :


 
ce sera pas betement dû à adblock ou un antivirus ?


Bref moment de lueur d'espoir, mais on :D
 
Pour le reste, faut vraiment que j'arrive à passer par un serveur mail externe, sinon je ne fais que repousser le problème.
 
Je focalise sur mailjet là, mais sans succès :/
 
Mon param:
MAILER_URL=smtp://in-v3.mailjet.com:587?encryption=tls&auth_mode=login&username=mauserkey&password=mausersecrete
 
J'ai testé 50 variations...  [:cerveau cinoque]  

Reply

Marsh Posté le 01-03-2018 à 20:05:21    

Tu as essayé en mettant le code d'envoi de mail dans un try catch et en affichant le message de l'exception, ca ppourrait te de donner une piste sur ce qui bloque  ?
 
dans la doc, ils disent mettent ca:
 
"If authentication fails, an Exception of type Swift_TransportException will be thrown.
 
If you need to know early whether or not authentication has failed and an Exception is going to be thrown, call the start() method on the created Transport."
 
Et si tu passes par un proxy, tu peux essayer ca
https://github.com/swiftmailer/swiftmailer/issues/1013


Message édité par tompouss le 01-03-2018 à 20:18:20

---------------
collectionneur de pâtes thermiques
Reply

Marsh Posté le 01-03-2018 à 20:05:21   

Reply

Marsh Posté le 01-03-2018 à 20:53:44    

:jap:
 
Aucune exception levée  [:cerveau cinoque]  
 
J'aurais bien testé un autre transporteur que mailjet, mais gmail est assez fermé (pour un compte particulier du moins)... :/

Reply

Marsh Posté le 01-03-2018 à 23:07:52    

Tu peux regarder tipmail ou mailgun peut-être.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 01-03-2018 à 23:51:17    

:jap:
 
Eh bien eh bien... ça marche avec mailgun (+ la librairie qui va avec) :D
 
Je vais rester sur cette option, en espérant que j'aurai pas d'embûche au moment de déclarer le domaine voulu chez OVH, c'est assez mystérieux pour moi ces concepts (MX & co) :D
 
Bon, dommage pour mailjet, j'avais une pref pour lui qd même :o
 
Merci!

Reply

Marsh Posté le 01-03-2018 à 23:58:33    

Omagad
 
Honte à moi
Mailgun m'a fait percuter un truc: j'utilisais en tant que sender, des emails random
 
Forcément, le NDD était pas enregistré chez  mailjet/mailgun, et ça n'arrivait jamais :D
 
Putaiiiiiiiiiiiiiiiiiin le con [:kaio]


Message édité par potemkin le 01-03-2018 à 23:59:41
Reply

Marsh Posté le 02-03-2018 à 11:06:17    

A la boulette ! :D


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 02-03-2018 à 17:51:31    

Ca arrive aux meilleurs, dira-t-on :whistle:
 
Merci à toi et tompouss pour votre aide! Je reviens pour la prochaine boulette dans un nouveau topac :D

Reply

Marsh Posté le 09-03-2018 à 14:35:21    

pour info:
 
https://symfony.com/doc/3.4/email/gmail.html
 
j'ai testé et ca marche bien

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed