【问题标题】:Configuring a mail driver in Laravel (using MAMP)在 Laravel 中配置邮件驱动程序(使用 MAMP)
【发布时间】:2019-02-22 22:38:33
【问题描述】:

我正在尝试使用 Laravel 的 auth 包,但在尝试使用其“发送密码重置链接”选项时遇到了各种错误。我使用 MAMP 作为服务器。默认情况下,我的 .env 如下所示:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

我在尝试发送邮件时不断收到 Swift_TransportException 错误。

我是否应该使用我的电子邮件和密码连接我拥有的 Gmail 地址,本质上是告诉 Laravel 使用 Gmail 作为邮件服务器?由于我的密码会公开,这不是安全风险吗?

作为替代方案,我可以/应该将邮件服务器添加到 MAMP 并使用其凭据吗?再说一遍,这不是安全风险吗?

【问题讨论】:

  • 问题不在于具体错误,而在于最佳实践。例如,在 Gmail 中允许“不太安全的应用”或两步验证应用密码。或者设置一个备用邮件服务器?
  • .env 的内容不会“公开”。您可以在测试中使用 Gmail,但最好在生产中使用 Sendgrid 或 Amazon SES 之类的东西。同样,在任何这些情况下,您的凭据都不会显示给应用程序的访问者,除非您做了一些愚蠢的事情,例如将 config() 的内容打印到某处的浏览器。
  • 您收到该错误是因为 Mailtrap.io 要求您创建一个免费帐户,他们会为您提供凭据。如果您决定使用 Laravel Homestead 而不是 MAMP,它将包含 MailHog 作为虚拟电子邮件服务器,并带有 gui 收件箱 ui。

标签: php laravel email


【解决方案1】:
  1. 此配置会将电子邮件保存到日志文件:

    MAIL_DRIVER=log
    MAIL_HOST=mailtrap.io
    MAIL_PORT=587
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=tls
    
  2. 如果您在 Sendgrid 中注册,您将能够使用他们的 smtp 服务器。 此配置将使用 Sendgrid 作为 smtp 服务器:

     MAIL_DRIVER=smtp
     MAIL_HOST=smtp.sendgrid.net
     MAIL_PORT=587
     MAIL_USERNAME=your_user_name_from_sendgrid
     MAIL_PASSWORD=your_password_from_password
     MAIL_ENCRYPTION=tls
    

【讨论】:

  • 这种工作,但正如预期的那样,电子邮件被转储到 laravel.log。如何将其发送到实际的电子邮件帐户?
  • 尝试使用 sendgrid。这真的很容易。
  • 它被转储到 laravel.log 因为设置 MAIL_DRIVER=log 会导致邮件配置的其余部分被忽略,因为日志驱动程序不需要凭据
  • @staskrak 它仍然无法正常工作,添加了 sendgrid 配置并获得了“预期的响应代码 220 但得到了代码”,并带有消息“””错误。
猜你喜欢
  • 2014-05-04
  • 2015-05-13
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 2015-12-23
  • 2016-04-20
相关资源
最近更新 更多