Maison  >  Questions et réponses  >  le corps du texte

Le DSN de l'expéditeur de courrier Symfony 6 utilisant SMTP ne peut pas envoyer de courrier

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粉957661544P粉957661544268 Il y a quelques jours306

répondre à tous(1)je répondrai

  • P粉482108310

    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, 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

    répondre
    0
  • Annulerrépondre