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

我得到这个错误:

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

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

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

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

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

在我的情况下mailer.yml

framework:
mailer:
dsn: 'smtp://%env(MAILER_USER)%:%env(resolve:MAILER_PASS)%@%env(MAILER_HOST)%?encryption=tls&auth_mode=plain'

.env

MAILER_USER=user@server
MAILER_PASS=password$
MAILER_HOST=mail.server:25

如果您的邮件服务器密码包含#,那么您应该引用环境字符串,因为#之后的所有内容都将被视为注释(从Laravel 5.8开始(

相关内容

  • 没有找到相关文章

最新更新