symfony swiftmailer: mail not sent in prod-environ

2019-05-07 20:28发布

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条回答
做个烂人
2楼-- · 2019-05-07 20:50

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
查看更多
登录 后发表回答