我尝试在开发环境中的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正式回购的重新发现
在我的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);
这更令人讨厌:我成功通过命令界面发送邮件:
php app/console swiftmailer:email:send --from=test@myapp.dev --to=xxx@xxx.xx --subject=s1 --body=b1
但仍然不能通过我自己的命令:\
答案 0 :(得分:3)
好的,我理解我做错了什么。我的docker容器可以正常使用我的symfony应用程序。 只是在我的命令中,我在结束之前执行了一个exit(),因此从未触发了应该捕获发送邮件事件的eventListener。
当我删除exit()(出于测试目的)时,一切正常。