Symfony SwiftMailer:生产环境下未发送邮件

4

我有一个使用Symfony 2.8框架和FosUserBundle插件的应用程序。在dev环境中,注册确认邮件可以发送成功,但在prod环境中却不能发送。没有日志消息,smtp配置也是正确的。

相关版本信息:

  • Symfony版本:2.8.1
  • Swiftmailer-bundle版本:当前版本(与Symfony兼容,Composer json中为2.*
  • Fosuserbundle版本:1.3.5(Composer中标记为*

dev环境配置如下:

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

有其他人也遇到过同样的问题吗?

编辑

我刚刚尝试使用以下终端命令在prod环境中发送邮件:php sf --env=prod swiftmailer:email:send

终端输出:

#!/usr/bin/env php
From: test@antondachauer.de
To: mail@antondachauer.de
Subject: test
Body: test
Sent 1 emails

但是邮件没有发送。在dev环境中,在终端中也可以工作。


生产环境是否在同一台服务器上?您是否更改了Swiftmailer的标准配置设置,或者是从新的2.8.1安装中进行的,还是从以前的版本升级而来?您使用的是什么操作系统? - Jason Roman
生产环境位于同一台服务器上(Ubuntu 14.04)。我已从2.3.x更新,并使用默认的swiftmailer配置。 - user4144415
你尝试过清除缓存吗? - Radu Murzea
config*.yml文件中的swiftmailer配置是什么?它使用spool吗?它如何与FOSUserBundle链接?所有电子邮件都不发送还是只有来自FOSUserBundle的电子邮件不发送? - A.L
查看 app/logs/prod.log 可能会有所帮助。 - qwertz
1个回答

0

我尝试了所有这里提到的解决方案,包括 "gethostbyname" 和 "更改 Gmail 的 smtp",但都没有成功。

经过几天的探索,我找到了一个解决方案,您需要将加密方式更改为 TLS,并在配置文件的 stream_options 中添加 SSL。从安全的角度来看,这并不推荐,但在我的情况下可以正常工作。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接