Symfony 6-Mail-Absender-DSN, der SMTP verwendet, kann keine E-Mails senden
P粉957661544
P粉957661544 2024-02-17 11:47:47
0
1
320

Ich versuche, Symfony 6 Mailer mit verschiedenen SMTP-Servern zu verwenden, aber keiner davon funktioniert.

Nachricht in der Warteschlange, aber nicht gesendet. Ich habe versucht, Firewall- oder Portprobleme auf verschiedenen Servern zu beheben.

Es gibt keine Protokollmeldungen oder Ausnahmen, daher bin ich verwirrt.

Hier sind einige DSNs, die ich ausprobiert habe:

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"

Ich habe tatsächlich viele DSN-Kombinationen mit/ohne Verschlüsselung ausprobiert. Ich vermute, dass das Problem in der DSN-Zeichenfolge liegt, denn wenn ich den falschen Host oder das falsche Passwort verwende, ist der Effekt derselbe.

Das ist ein seit langem bestehendes Problem, das ich lange Zeit nicht lösen konnte.

Dies ist der Sendecode:

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

framework:
    mailer:
        dsn: '%env(MAILER_DSN)%'

und messenger.yaml Inhalt:

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

Antworte allen(1)
P粉482108310

根据您当前的信使配置,不会直接发送电子邮件,而是仅在调用 messenger:consume 时发送。

这是因为 Messenger 正在对电子邮件(或短信等其他消息)进行排队,而不是立即发送。

您可以在此处了解有关消息组件的更多信息 a>,但如果您想暂时忽略它,只需通过修改传输配置来同步发送电子邮件。

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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage