通过 docker 容器邮件服务器在 Symfony 中发送电子邮件

Sending emails in Symfony via a docker container mail server

我正在尝试通过开发环境中我的 symfony 应用程序中的 docker 容器发送电子邮件。

我有以下 docker-compose 文件:

my-app-mailer:
  image: tvial/docker-mailserver
  container_name: my_app_mailer
  hostname: mail
  domainname: myapp.dev
  ports:
  - "25:25"
  - "143:143"
  - "587:587"
  - "993:993"
  volumes:
  - ./mail/spamassassin:/tmp/spamassassin/
  - ./mail/postfix:/tmp/postfix/

所以当我 运行 docker-compose 时,我的容器启动良好,我可以看到它的日志。

我遵循了 tvial/docker-mailserver

官方回购的建议

https://hub.docker.com/r/tvial/docker-mailserver/

在我的 parameters.yml 中,我有这些选项

parameters:
    ...
    mailer_transport: smtp
    mailer_host: mail.myapp.dev
    mailer_user: user1@myapp.dev
    mailer_password: user1pass
    ...

但是当我通过 swiftmailer 发送电子邮件时,我看不到任何邮件到达:(

我已经将 delivery_address 参数化为我的(这样开发环境中的每封邮件都会发送到我的地址)。

但是,我通过telnet发送邮件成功了:

telnet mail.myapp.dev smtp

而且我可以看到邮件到达。

有人知道我遗漏了什么吗?

编辑

这是我的 php 电子邮件发送代码(我在命令中)

$mailer = $this->getContainer()->get('mailer');
$message = new \Swift_Message('subject', 'body');
$message
    ->setFrom('user1@myapp.dev')
    ->setTo('xxxx@xxx.xx')
;

$mailer->send($message);

编辑 2

越来越奇怪了:我成功通过命令界面发送邮件了:

php app/console swiftmailer:email:send --from=test@myapp.dev --to=xxx@xxx.xx --subject=s1 --body=b1

但仍然无法通过我自己的命令执行:\

好的,我明白我做错了什么。我的 docker 容器与我的 symfony 应用程序配合得很好。 只是在我的命令中,我在结束前执行了一个exit(),所以本应捕获发送邮件事件的eventListener 并没有被触发。

当我删除我的 exit()(用于测试目的)时,一切正常。