SwiftMailer reception d'email

Par Alex-trem, il y a 5 ans


Bonjour,

Je refais un topic sur ce sujet mais cette fois j'essaie la config smtp ou imap, je ne sais pas trop quoi utiliser mais j'ai toujours une erreur..
J'essaie simplement de recevoir des mails depuis un formulaire de contact

Ce que je fais

Décrivez votre code ou ce que vous cherchez à faire.

<?php namespace Framework; use Psr\Container\ContainerInterface; class SwiftMailerFactory { public function __invoke(ContainerInterface $container): \Swift_Mailer { if ($container->get('env') === 'prod') { $transport = new \Swift_SmtpTransport('imap.gmail.com', 993); } else { $transport = new \Swift_SmtpTransport('localhost', 1025); } return new \Swift_Mailer($transport); } }

Ce que j'obtiens

Fatal error: Uncaught Swift_TransportException: Expected response code 220 but got an empty response in /storage/ssd4/411/16324411/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:448 Stack trace: #0 /storage/ssd4/411/16324411/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(361): Swift_Transport_AbstractSmtpTransport->assertResponseCode() #1 /storage/ssd4/411/16324411/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(147): Swift_Transport_AbstractSmtpTransport->readGreeting() #2 /storage/ssd4/411/16324411/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Mailer.php(65): Swift_Transport_AbstractSmtpTransport->start() #3 /storage/ssd4/411/16324411/src/Contact/Action/ContactAction.php(39): Swift_Mailer->send() #4 [internal function]: App\Contact\Action\ContactAction->__invoke() #5 /storage/ssd4/411/16324411/src/Framework/App.php(52): call_user_func_array() #6 /storage/ssd4/411/16324411/public_html/index.php(14): Framewo in /storage/ssd4/411/16324411/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php on line 448

4 réponses

Jessy Brs, il y a 5 ans

Salut,
Pour swift mailer, il faut

dans le fichier ".env" configurer ton mail
Ex: MAILER_URL=null://localhost

puis ton ton service ou autre

/ $message = (new \Swift_Message('objet')) ->setFrom('ton email') ->setTo("pour l'email du destinataire") ->setBody( '<p>Bonjour, voici mon message</p>', 'text/html' ); // On envoie l'email $mailer->send($message);
Alex-trem, il y a 5 ans

J'aurais dû préciser, ce site n'est pas fait avec symfony c'est uniquement du php
Apparemment c'est l'hebergeur 000webhost qui n'autorise pas la fonction proc-open()
Y a t il une autre façon de procéder sans utiliser cette fonction ? Surtout que c'est uniquement pour la reception d'email pas l'envoi.

Lartak, il y a 5 ans

Bonjour.
Tu te perds dans ton raisonnement:
Surtout que c'est uniquement pour la reception d'email pas l'envoi.

Dans l'énoncé de ton sujet, tu parles d'un formulaire de contact, par conséquent tu envois des mails via ton application web et non l'inverse.
Même si tu n'envois pas les mails via une de tes adresses email.

Alex-trem, il y a 5 ans

Ouais c'est ce que je me suis dis aussi, même si c'est pas une newsletter par exemple ça reste un envoi d'email également.
Mais vu que l'hébergeur bloque l'utilisation de proc_open() j'essaie d'utiliser PHPMailer maintenant