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
中的正确命令,发送电子邮件应该可以正常工作。
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
中的正确命令,发送电子邮件应该可以正常工作。