Php 在Laravel中配置邮件驱动程序(使用MAMP)

Php 在Laravel中配置邮件驱动程序(使用MAMP),php,laravel,email,Php,Laravel,Email,我试图使用Laravel的auth软件包,当我试图使用它的“发送密码重置链接”选项时,会出现各种错误。我使用MAMP作为服务器。默认情况下,My.env如下所示: MAIL_DRIVER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null 当我尝试发送邮件时,总是会出现异常错误 我是否应该用我的电子邮件和密码连接我自己的Gmail地址,

我试图使用Laravel的auth软件包,当我试图使用它的“发送密码重置链接”选项时,会出现各种错误。我使用MAMP作为服务器。默认情况下,My.env如下所示:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
当我尝试发送邮件时,总是会出现异常错误

我是否应该用我的电子邮件和密码连接我自己的Gmail地址,实际上是告诉Laravel使用Gmail作为邮件服务器?这不是一个安全风险,因为我的密码会公开吗

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

  • 此配置将电子邮件保存到日志文件:

    MAIL_DRIVER=log
    MAIL_HOST=mailtrap.io
    MAIL_PORT=587
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=tls
    
  • 如果您在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
    

  • 问题不在于具体的错误,而在于最佳实践。例如,允许在Gmail中使用“不太安全的应用程序”或两步验证应用程序密码。或者设置备用邮件服务器?
    .env
    的内容不会“公开”。您可以在测试中使用Gmail,但最好在生产中使用Sendgrid或AmazonSES之类的工具。同样,在上述任何情况下,您的凭据都不会显示给应用程序的访问者,除非您执行了一些愚蠢的操作,例如将
    config()
    的内容打印到浏览器的某个位置。您会遇到此错误,因为Mailtrap.io要求您创建一个免费帐户,他们会给您凭据。如果您决定使用MAMP而不是MAMP,它将包含一个虚拟电子邮件服务器,并带有一个gui收件箱ui。这种方式可以工作,但正如预期的那样,电子邮件将转储到laravel.log。如何将其发送到实际的电子邮件帐户?尝试使用sendgrid。这真的很容易。它被转储到laravel.log,因为设置
    MAIL\u DRIVER=log
    会导致邮件配置的其余部分被忽略,因为日志驱动程序不需要credentials@staskrak它仍然不工作,添加了sendgrid配置并获得“预期响应代码220,但获得代码“”,并显示消息“”错误。