0

我正在 docker 容器上开发一个 symfony 项目,我设置了一个使用 swiftmailer 并notfloran/mjml-bundle发送邮件的 Mailer 服务。mjml bndle 需要我安装在容器上的 mjml 二进制文件npm install 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 命令有效

4

1 回答 1

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

然后再试一次给你发邮件

于 2020-05-15T12:04:04.830 回答