Symfony 4 Swift Mailer不发送邮件

时间:2018-04-12 15:43:52

标签: symfony swiftmailer

我在Symfony 4FOSUserBundle的本地主机服务器上工作。当新用户注册时,我无法接收电子邮件确认。

我试过以下帖子,但在我的情况下不起作用: Symfony 4 SwiftMailer Gmail : Email not sent

我尝试将SwiftMailer配置为使用gmail smtp servermailtrap smtp server发送但未成功。此外,我已检查dev.log并且未找到任何错误。

我不确定哪个是配置Swift Mailer的正确文件(.env或packages / dev / swiftmailer.yaml)。现在配置如下:

.env文件:

MAILER_URL=gmail://***@gmail.com:***@localhost

swiftmailer.yaml:

swiftmailer:
transport:        gmail
username:         ***@gmail.com
password:         ***
host:             localhost
port:             465
encryption:       ssl
auth-mode:        login
spool: { type: 'memory' }
stream_options:
    ssl:
        allow_self_signed: true
        verify_peer: false
        verify_peer_name: false 

有什么想法吗?使用gmail作为smtp服务器不是必须的。

事先谢谢。

解决方案:

问题出在/config/test/fos_user.yaml文件中:

我改变了:

service:
  mailer: 'fos_user.mailer.noop'

要:

service:
  mailer: 'fos_user.mailer.default'

文档:http://symfony.com/doc/master/bundles/FOSUserBundle/emails.html

此外,我还接受了来自Gmail帐户设置的不太安全的连接,以便工作。

2 个答案:

答案 0 :(得分:1)

我在Symfony 4中遇到了相同的问题。我的软件包版本 swiftmailer / swiftmailer v6.1.0 symfony / swiftmailer-bundle v3.2.2 当我使用配置时:   swiftmailer:       网址:“%env(MAILER_URL)%”       假脱机:{类型:“内存”}

未发送电子邮件,也没有发生异常。 然后将设置更改为:

swiftmailer: url: '%env(MAILER_URL)%' spool: type: 'file' path: '%kernel.cache_dir%/swiftmailer/spool'

尝试过的命令:

php bin/console swiftmailer:spool:send --env=dev -vvv

我看到了错误:

[Swift_SwiftException]
No IDN encoder found (install the intl extension or the true/punycode package
所以我通过以下方式安装了true / punycode软件包:

composer req true/punycode

现在,利用假脱机内存,电子邮件也可以正常发送。

答案 1 :(得分:0)

Symfony邮件程序的默认行为是立即发送电子邮件,但是在您配置时,它将“假脱机”电子邮件而不是直接发送电子邮件。

spool: { type: 'memory' }

使用控制台命令单独完成从假脱机发送消息:

php bin/console swiftmailer:spool:send --env=dev

@see更多文档here

更新: 正如@nek在第一条评论中所说,内存假脱机立即发送邮件(如果没有发生异常)。只有在使用文件假脱机时才需要使用spool:send命令。