Symfony 4 SwiftMailer Gmail:邮件未发送

7
我目前正在开发一个Symfony 4应用程序,需要通过Swift Mailer发送电子邮件。当我发送一封电子邮件时,我收到了电子邮件,但在我的Gmail邮箱中没有收到它。我在我的Gmail配置中允许了不安全的应用程序。
这是我的.env文件中的邮件URL:MAILER_URL=gmail://ep****@gmail.com:PASSWORD@localhost
这是我的swiftmailer.yaml文件:
    #config/packages/swiftmailer.yaml
    swiftmailer:
        url: '%env(MAILER_URL)%'
        spool: { type: 'memory' }

这是我的控制器函数:

src/Controller/AccountController.php

完成表单后

我遵循的文档链接如下:http://symfony.com/doc/current/email.html

我查看了这些问题,但它们没有给我答案:如何在运行Windows 10的本地计算机上使用Symfony 4 Swiftmailer发送电子邮件?symfony 4邮件不工作

请帮帮我,我已经整天找寻解决方案了。我没有收到邮件,也没有出现任何错误。谢谢您提前的帮助,任何链接都可以帮助我。


3
请将英语翻译为中文。仅返回翻译后的文本:请勿发布代码截图而非代码本身。 - Ibo
1
你设置了CRON作业来处理spool吗?你尝试省略spool配置设置了吗?spooling是必需的吗? - Arleigh Hix
我没有设置它。我尝试省略池,但没有变化。 - Salve Safari
我有同样的问题。你解决了吗?@SalveSafari - Alex Pavlov
是的,我解决了 :) 请看下方说明。 - Salve Safari
这是我的解决方案。它在Symfony 4.x上完美运行。 - juanitourquiza
5个回答

14

问题解决了! 用这个配置替代使用URL环境变量。

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

1
谢谢!那个起了作用。你有什么想法为什么.env文件不起作用? - Miles M.
我注意到从Symfony 3升级到Symfony 4后,本地SMTP不再启用。要在.env中使用本地SMTP,请设置MAILER_URL = smtp:// localhost:25?encryption =&auth_mode = - Robert Saylor
1
明智的回答。节省了许多沮丧的时间。谢谢@Selve! - Anjana Silva

3
迟来的参与者,但URL格式需要完整的设置。我认为SwiftMailer不会解析URL以检测特定的传输(如gmail),以便自行配置重置。
以下格式适用于我: "最初的回答"
MAILER_URL=smtp://smtp.gmail.com:587?encryption=tls&username=USERNAME&password=PASSWORD

2
根据我的经验,如果您想通过SMTP访问Google Suite或Gmail帐户,您需要启用"允许不安全登录",因为它们会阻止此类访问。"最初的回答"。

1

注释掉 spooler 行

swiftmailer:
url: '%env(MAILER_URL)%'
#spool: { type: 'memory' }

非常感谢,你帮了我很多 :) - Ahmed Ismail

0

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