为啥 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”

为啥从子组件返回时我会从查询结果中获得空指针?

Symfony 4.4 - Swift Mailer 安装失败