【问题标题】:Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required预期响应代码 250,但得到代码“530”,消息“530 5.7.1 需要身份验证”
【发布时间】:2018-06-28 16:38:26
【问题描述】:

我在尝试在laravel 上配置 SMTP 邮件时遇到了这个错误

这是我在.env上的配置

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=fff3c01db52ee0
MAIL_PASSWORD=feaeda91dc9ab6
MAIL_ENCRYPTION=TLS

我必须尝试在 env 上对 SMTP 进行身份验证,但我不断收到相同的错误,所以现在我正在处理该错误

【问题讨论】:

  • 请勿将代码发布为图片
  • 修改.env文件后别忘了重启Laravel开发服务器。

标签: php laravel laravel-5


【解决方案1】:

如果您使用了“PHP artisan serve”命令,请在更改“.env”后重新启动 Laravel 开发服务器。

【讨论】:

    【解决方案2】:
    php artisan config:clear   
    

    (不缓存)

    【讨论】:

    • 显然首先要确保 .env 中的所有细节都是正确的
    • 请在您的答案中添加一些解释,以便其他人可以从中学习
    【解决方案3】:

    如果你想使用默认的mailtrip.io你不需要修改mail.php文件。

    1. 在 mailtrip.io 上创建帐户
    2. 转到收件箱 > 我的收件箱 > SMTP 设置 > 集成 Laravel
    3. 修改.env文件并替换所有nulls的正确凭据:
    MAIL_HOST=smtp.mailtrap.io
    MAIL_PORT=2525
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=null
    
    1. 运行:
    php artisan config:cache
    

    如果您使用的是 Gmail,请参阅 Gmail 说明: https://stackoverflow.com/a/64582540/7082164

    【讨论】:

      【解决方案4】:

      \config\backup.php 第 123 行

          'mail' => [
              'to' => '',
          ],
      

      【讨论】:

        【解决方案5】:

        您在配置中的mail.php 声明主机为smtp.mailgun.org,端口为587,而在环境中则不同。您需要将您的mail.php 更改为

        'host' => env('MAIL_HOST', 'mailtrap.io'),
        
        'port' => env('MAIL_PORT', 2525),
        

        如果你想使用 mailtrap。然后运行

        php artisan config:cache
        

        【讨论】:

        • 无需更改mail.php 文件,php artisan config:cache 成功了
        • env() 助手完成了这项工作,无需更改 mail.php 中的值。只需确保.env 文件中的所有电子邮件设置都是正确的。
        【解决方案6】:

        我相信这已经在某些部分得到了解答,只需使用 gmail 测试您的“MAIL_HOST”,不要忘记清除缓存。设置如下: 首先,您需要在google security 设置两步验证。将出现一个应用程序密码链接,您可以将您的应用程序密码插入“MAIL_PASSWORD”下方。更多关于获取App Password here的信息

        MAIL_DRIVER=smtp
        MAIL_FROM_ADDRESS=noreply@domain.com
        MAIL_FROM_NAME=DomainName
        MAIL_HOST=smtp.gmail.com
        MAIL_PORT=587
        MAIL_USERNAME=YOUR_GMAIL@gmail.com
        MAIL_PASSWORD=YOUR_GMAIL_CREATED_APP_PASSWORD
        MAIL_ENCRYPTION=tls
        

        清除缓存:

        php artisan config:cache
        

        【讨论】:

        • 为什么将mail_driver设置为sendmail而不是“smtp”时需要这个?以及为什么 Laravel 不能像 Wordpress 和服务器上运行的所有其他系统一样从服务器上的 sendmail 发送...
        • 那么在设置这个之前,您是否使用 sendmail 设置了 smtp,作为额外的步骤?
        • 一点也不!这些只是被错误忽略的预设值。
        • 你说“应用密码链接将出现”出现在哪里???
        • 我找到了它在哪里。在 2stepped auth 之后,您会回到建议的位置,现在是 apeas 下的另一个选项。应用程序的密码。然后你输入,他们要求你输入应用程序名称(env('APP_NAME'))。你终于得到了那把钥匙。 IE。 MAIL_PASSWORD 值。但现在它会将重置信发送到垃圾邮件文件夹。否则它现在可以在 localhost 上正常工作。
        【解决方案7】:

        我看到你的所有设置都是正确的。您只需要结束本地 Web 服务器并使用

        重新启动它
        php artisan serve
        

        每次更改 .env 文件时,都需要重新启动服务器以使新选项生效。

        或使用

        清除和缓存您的配置
        php artisan config:cache
        

        【讨论】:

          【解决方案8】:

          是的,如果您已经尝试了上述所有解决方案(更有可能发生的情况)并且没有一个适合您,则可能是没有安装 Guzzle。

          Laravel 提供了 Guzzle 框架所需的邮件工具,但它不会被安装,并且根据文档,必须手动安装它: https://laravel.com/docs/master/mail#driver-prerequisites

          composer require guzzlehttp/guzzle
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-01-10
            • 2017-09-17
            • 1970-01-01
            • 2017-07-23
            • 2020-08-20
            • 2021-02-02
            • 1970-01-01
            • 2020-11-15
            相关资源
            最近更新 更多