为啥 Symfony Mailer 组件返回一个空响应?
Posted
技术标签:
【中文标题】为啥 Symfony Mailer 组件返回一个空响应?【英文标题】:Why is the Symfony Mailer Component returning an empty response?为什么 Symfony Mailer 组件返回一个空响应? 【发布时间】:2019-10-31 03:57:54 【问题描述】:我想将我的邮件从 Swift Mailer 转换为 Mailer 组件,因为我升级到 Symfony 4.3。
我已将我的 MAILER_URL 转换为 MAILER_DSN,方法如下:
MAILER_URL=smtp://smtp.zoho.eu:465?encryption=ssl&auth_mode=login&username=bar@foo.com&password=password123
MAILER_DSN=smtp://bar@foo.com:password123@smtp.zoho.eu:465/?encryption=ssl&auth_mode=login
如您所见,我使用 Zoho 作为我的邮件提供商。
但是,我收到以下内部服务器错误:
Expected response code "250" but got an empty response.
我尝试从 SSL 切换到 TLS,但没有(不同)结果。
我编写的发送测试邮件的代码如下:
$email = (new TemplatedEmail())
->from('bar@foo.com')
->to('foo@bar.com')
->subject('Test')
->htmlTemplate('email.html.twig')
->context([
'expiration_date' => new \DateTime('+7 days'),
'username' => 'foo',
])
;
$this->mailer->send($email);
我希望我的代码会向“foo@bar.com”发送邮件,但它会按照描述将空响应变为空响应。
【问题讨论】:
你有没有试过在 Symfony Mailer 的 Transport:github.com/symfony/mailer/blob/… & github.com/symfony/mailer/blob/… 中设置一个断点(或 var_dumping)解析的 DSN?可能由于某种原因没有正确解析 DSN。 我可以验证它是否正确解析。身份验证有效,它只是由于某种原因返回一个空响应...... 您是否尝试过使用端口 587 而不是 465? 【参考方案1】:问题是用户名中的“@”必须编码:
MAILER_DSN=smtp://bar%40foo.com:password123@smtp.zoho.eu:465/?encryption=ssl&auth_mode=login
感谢fabpot。这是他的答案的链接https://github.com/symfony/symfony/issues/32148#issuecomment-517903812
【讨论】:
以上是关于为啥 Symfony Mailer 组件返回一个空响应?的主要内容,如果未能解决你的问题,请参考以下文章
Symfony 5 Mailer 使用 liipimagine_filter 嵌入图像
用 phpunit 模拟 symfony 安全,返回空值而不是布尔值(不使用预言)
Symfony messenger 和 mailer:如何添加 binding_key?
Symfony:无法用实际定义“”替换别名“swiftmailer.mailer.default.transport.real”