问题描述
Contao的较旧版本(直到4.3)可以通过sendmail发送电子邮件,按预期方式工作。 升级到Contao 4.9后,我在诸如1u1 / ionos或mittwald的提供程序中遇到了一些错误。
日志中的错误听起来像:
“预期的响应代码为220,但响应为空”
从服务器的CLI发送邮件(意味着如果通过SSH登录,则表示发送邮件的工作方式与预期的一样:sendmail test” |
/ 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缓存(例如,通过contao-manager.phar)并尝试一下。
该问题的原因是,默认情况下,swiftMailer使用sendmail -bs
作为命令,这意味着sendmail作为standalone
服务运行。
根据提供者配置它的sendmail的方式,这将是导致错误的原因。
如果将symfony/swiftmailer-bundle
更新为版本 3.5.0 ,则将从PHP配置中读取用于sendmail
命令的默认值。参见https://github.com/symfony/swiftmailer-bundle/pull/302
因此,只要您的托管环境的PHP配置在sendmail_path
中包含正确的命令,发送电子邮件就可以正常进行。