Contao > 4.3 发送带有 sendmail 的电子邮件在某些提供商上抛出错误

Contao > 4.3 sending emails with sendmail throw error on some providers

Contao 的旧版本(直到 4.3)按预期工作,通过 sendmail 发送电子邮件。 升级到 Contao 4.9 后,我在 1u1 / ionos 或 mittwald 等提供商处遇到了一些错误。

日志中的错误听起来像:

"Expected response code 220 but got an empty response"

从服务器的 CLI 发送邮件(意味着如果通过 SSH 登录)像 expected:sendmail 测试一样工作" |

/usr/sbin/sendmail -t -v -f sender@domain.com reciepient@otherOne.com

解决办法是把这个加到config/config.yml

swiftmailer:
  default_mailer: default
  mailers:
    default:
      url: '%env(MAILER_URL)%'
      transport: sendmail
      command: '/usr/sbin/sendmail -t -i'

之后,清除 Contao-Cache(例如通过 contao-manager.phar)并试一试。

这个问题的原因是,swiftMailer 默认使用 sendmail -bs 作为命令,这意味着 sendmail 运行 作为 standalone 服务。 根据您的提供商配置它的 sendmail 的方式,这将是错误的原因。

如果您将 symfony/swiftmailer-bundle 更新到版本 3.5.0,则将从 [=20] 中读取用于 sendmail 命令的默认值=] 配置。参见 https://github.com/symfony/swiftmailer-bundle/pull/302

因此,如果您的托管环境的 PHP 配置包含 sendmail_path 中的正确命令,发送电子邮件应该可以正常工作。