Le DSN de l'expéditeur de courrier Symfony 6 utilisant SMTP ne peut pas envoyer de courrier
P粉957661544
P粉957661544 2024-02-17 11:47:47
0
1
325

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.yamlContenu :

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粉957661544
P粉957661544

répondre à tous(1)
P粉482108310

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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal