我正在docker容器上的symfony项目上,我设置了一个Mailer服务,该服务使用swiftmailer和notfloran/mjml-bundle
发送邮件。
mjml bndle需要使用npm install mjml
安装在容器上的mjml二进制文件。
在代码中:
$mail = new \Swift_Message();
$mail
->setFrom($from)
->setTo($to)
->setSubject($subject)
->setBody($body)
->setContentType('text/mjml');
$this->mailer->send($mail);
问题是,当我请求通过docker容器发送邮件的功能时,没有错误,但没有发送邮件。
但是,当我使用php -S adress -t public
启动服务器并请求发送邮件的功能时,邮件将被发送。
编辑:我试图记录进程。在日志中有一个mjml binary not found
,但是当我在容器中输入时,mjml命令有效
答案 0 :(得分:0)
在这种情况下,SwiftMailer有点难以调试。我有一个类似的人。
如果您使用的是docker,则必须确保已设置并配置了电子邮件客户端,以便php可以使用它。
我正在使用php:7.4-fpm并通过自己的dockerfile添加msmtp
FROM php:7.4-fpm
RUN apt-get update && apt-get install -y msmtp
# msmtp - mailer
COPY build/etc/msmtprc /etc/msmtprc
RUN chmod 600 /etc/msmtprc
msmtprc文件:
account default
host mailhost.mobilcom.de
port 25
auth off
user null
password null
from "docker@klarmobil.de"
logfile /var/log/msmtp.log
并添加到php.ini:
sendmail_path = /usr/bin/msmtp -t
然后重试向您发送邮件