我正在尝试使用不同的 SMTP 服务器使用 Symfony 6 Mailer,但它们都不起作用。
消息已排队但未发送。我尝试从不同的服务器上排除防火墙或端口问题。
没有日志消息或异常,所以我很迷茫。
这是我尝试过的一些 DSN:
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"
我实际上尝试了许多带/不带加密的 DSN 组合。我怀疑问题出在 DSN 字符串中,因为如果我尝试错误的主机或密码,效果是相同的。
这是一个长期存在的问题,我很长时间都无法解决。
这是发送代码:
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
内容:
framework: mailer: dsn: '%env(MAILER_DSN)%'
以及messenger.yaml
内容:
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
根据您当前的信使配置,不会直接发送电子邮件,而是仅在调用
messenger:consume
时发送。这是因为 Messenger 正在对电子邮件(或短信等其他消息)进行排队,而不是立即发送。
您可以在此处了解有关消息组件的更多信息 a>,但如果您想暂时忽略它,只需通过修改传输配置来同步发送电子邮件。