Maison > Questions et réponses > le corps du texte
J'essaie d'utiliser Symfony 6 Mailer avec différents serveurs SMTP, mais aucun d'entre eux ne fonctionne.
Message mis en file d'attente mais non envoyé. J'ai essayé de résoudre les problèmes de pare-feu ou de port de différents serveurs.
Il n'y a pas de messages de journal ni d'exceptions, donc je suis confus.
Voici quelques DSN que j'ai essayés :
MAILER_DSN="smtp://email%40example.com:[email protected]:587?encryption=tls" MAILER_DSN="smtp://[email protected]:[email protected]:587?encryption=tls" MAILER_DSN="smtp://[email protected]:[email protected]:587"
J'ai en fait essayé de nombreuses combinaisons DSN avec/sans cryptage. Je soupçonne que le problème vient de la chaîne DSN, car si j'essaie le mauvais hôte ou le mauvais mot de passe, l'effet est le même.
C'est un problème de longue date que je n'ai pas pu résoudre depuis longtemps.
Voici le code d'envoi :
use Symfony\Component\Mime\Email; $email = (new Email()) ->from($this->parameterBag->get('app.message.email_from')) ->to($to) ->subject($subject) ->text($text) ->html($text); $sentMessage = $this->mailer->send($email);
mailer.yaml
Contenu :
framework: mailer: dsn: '%env(MAILER_DSN)%'
et messenger.yaml
contenu :
framework: messenger: failure_transport: failed transports: # https://symfony.com/doc/current/messenger.html#transport-configuration async: dsn: '%env(MESSENGER_TRANSPORT_DSN)%' options: use_notify: true check_delayed_interval: 60000 retry_strategy: max_retries: 3 multiplier: 2 failed: 'doctrine://default?queue_name=failed' # sync: 'sync://' routing: Symfony\Component\Mailer\Messenger\SendEmailMessage: async Symfony\Component\Notifier\Message\ChatMessage: async Symfony\Component\Notifier\Message\SmsMessage: async # Route your messages to the transports # 'App\Message\YourMessage': async
P粉4821083102024-02-18 10:29:56
En fonction de votre configuration actuelle de messagerie, l'e-mail ne sera pas envoyé directement, mais uniquement lorsque messenger:consume
sera appelé.
C'est parce que Messenger met l'e-mail (ou tout autre message comme un message texte) en file d'attente au lieu de l'envoyer immédiatement.
Vous pouvez en savoir plus sur le composant Message ici a>, mais si vous souhaitez l'ignorer pour l'instant, envoyez simplement des e-mails de manière synchrone en modifiant la configuration du transport.
framework: messenger: transports: async: 'sync://' routing: Symfony\Component\Mailer\Messenger\SendEmailMessage: async Symfony\Component\Notifier\Message\ChatMessage: async Symfony\Component\Notifier\Message\SmsMessage: async # Route your messages to the transports # 'App\Message\YourMessage': async