问题
I have a symfony 2.8 app, with fosuserbundle implemented. In the dev
environment, the registration confirm mails are sent, but not in the prod
environment. There is no log message and the smpt configuration is correct.
sf version: 2.8.1
swiftmailer-bundle version: current (compatible with sf version; 2.*
in composer json)
fosuserbundle: 1.3.5 (*
in composer)
dev-config:
imports:
- { resource: config.yml }
framework:
router:
resource: "%kernel.root_dir%/config/routing_dev.yml"
#strict_requirements: true
profiler: { only_exceptions: true }
web_profiler:
toolbar: true
intercept_redirects: true
assetic:
use_controller: true
Has anyone the same problem?
edit
I just tried a mail with the following console command in prod
env: php sf --env=prod swiftmailer:email:send
Terminal output:
#!/usr/bin/env php
From: test@antondachauer.de
To: mail@antondachauer.de
Subject: test
Body: test
Sent 1 emails
But the mail has not been sent. In the dev
env, it works also in terminal.
回答1:
I tried all the solutions mentioned here, which is "gethostbyname" and "change smtp of Gmail" but it did not work.
After a few days of digging, I found a solution, you need to change the encryption to tls, and add ssl in stream_options in config. It's not recommended according to the security standpoint, but it works in my case.
parameters.yml
mailer_prod_encryption: tls
config.yml
swiftmailer:
transport: "%mailer_dev_transport%"
host: "%mailer_dev_host%"
username: "%mailer_dev_user%"
password: "%mailer_dev_password%"
encryption: "%mailer_dev_encryption%"
auth_mode: "%mailer_dev_auth_mode%"
spool: { type: memory }
port: 25
stream_options:
ssl:
allow_self_signed: true
verify_peer: false
来源:https://stackoverflow.com/questions/34596190/symfony-swiftmailer-mail-not-sent-in-prod-environment