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

时间:2016-03-23 14:46:50

标签: php symfony docker smtp

我尝试在开发环境中的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参数化为我的(以便将dev env中的每封邮件发送到我的地址)。

但是,我成功通过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

但仍然不能通过我自己的命令:\

1 个答案:

答案 0 :(得分:3)

好的,我理解我做错了什么。我的docker容器可以正常使用我的symfony应用程序。 只是在我的命令中,我在结束之前执行了一个exit(),因此从未触发了应该捕获发送邮件事件的eventListener。

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