Laravel 5.6密码重置邮件未在Heroku上发送

时间:2019-03-19 12:02:48

标签: laravel laravel-5 heroku

我目前无法使用make:auth in Laravel 5.6创建的密码重置邮件。我的应用程序托管在Heroku上。在我当地的环境中,一切正常。我已经在Heroku的config vars中设置了正确的值,与我的本地.env文件中的值相同:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myMail@gmail.com
MAIL_PASSWORD=bla
MAIL_ENCRYPTION=tls

我在这里已经读到我必须对app/mail.php内的值进行硬编码,而不是引用.env文件,因为Heroku无法识别/理解该引用

'password' => env('MAIL_PASSWORD')

但是我的数据将在GitHub存储库中可见。

可能是什么问题?

编辑:

正确的答案是正确的答案。应该使用附加组件在Heroku中发送邮件。设置sendgrid之后,我仍然找到了使其与gmail兼容的方法;)

-我必须使用Port 465 with ssl进行加密。

-允许less secure apps访问我的帐户。

-访问http://www.google.com/accounts/DisplayUnlockCaptcha并使用您的Gmail用户名和密码登录。

完成这些步骤后,它开始工作。 也许这对其他人有帮助。

1 个答案:

答案 0 :(得分:2)

请勿在生产环境中使用Gmail。

Gmail并非旨在充当您的应用程序的SMTP网关。相反,请使用Heroku建议的众多mail addons中的一种。 Mailgun和SendGrid都是非常受欢迎的选项,但还有很多其他选择。

这些工具旨在为应用程序发送邮件。他们拒绝邮件的可能性会大大降低,如果配置正确,邮件被垃圾邮件过滤器捕获的可能性也将大大降低。他们中的大多数人都有设置操作的演练,我鼓励您关注它们。确保不要跳过SPFDKIM反垃圾邮件功能。

  

我在这里已经读到我必须对app/mail.php内的值进行硬编码,而不是引用.env文件,因为Heroku无法识别/理解该引用

'password' => env('MAIL_PASSWORD')

这是不正确的。

您说您已经在Heroku上设置了配置变量,并且填充了环境。 .env文件只是执行相同操作的便捷本地解决方法。选择的任何邮件附件都会自动为您设置一个或多个环境变量,您应该在代码中使用这些变量。


¹您也许也不应该在开发中使用它,但这在那儿没什么大问题。我敦促您改用Mailtrap(云)或Mailcatcher(本地)之类的东西。