首页 > 解决方案 > Symfony 4:MailerInterface 无法在 SMTP 服务器上进行身份验证

问题描述

使用基本的 Symfony 4.4 示例来使用 MailerInterface,我在我的.env文件中设置了这个 MAILER_DSN:

MAILER_DSN=smtp://email@example.com:123456@smtp.example.com:587

或者这个(无端口):

MAILER_DSN=smtp://email@example.com:123456@smtp.example.com

我收到此错误:

无法使用以下身份验证器在用户名“email@example.com”的 SMTP 服务器上进行身份验证:LOGIN、PLAIN

我的服务器需要端口 587 上的 STARTTLS,但我不知道如何使用此 DSN 格式指定它。

标签: symfonymailerdsn

解决方案


对我来说,它在 DSN 中指定端口 (587) 时起作用,邮件组件正确识别并使用了 STARTTLS。您的示例中可能棘手的是您需要转义@in email@example.comwith %40,因此您的 DSN 将如下所示:

MAILER_DSN=smtp://email%40example.com:123456@smtp.example.com:587

任何特殊的 URI 字符都需要转义(就像urlencodedos, so +, @, $, #, /, :, *, !),也许这就是它不起作用的原因。


推荐阅读