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


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);

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.

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.

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