通过 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
官方回购的建议
在我的 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()(用于测试目的)时,一切正常。
我正在尝试通过开发环境中我的 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 参数化为我的(这样开发环境中的每封邮件都会发送到我的地址)。
但是,我通过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()(用于测试目的)时,一切正常。