Laravel 无法使用用户名在 SMTP 服务器上进行身份验证

问题描述 投票:0回答:6

我正在尝试通过 Laravel 发送电子邮件。 但它出现错误。

.env 文件配置如下:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=******
MAIL_ENCRYPTION=tls

控制器代码如下:

 $data = array('name'=>"Ripon Uddin", "body" => "Test mail");

    Mail::send('email', $data, function($message) {
        $message->to('[email protected]','To My Yahoo')->subject('Laravel Test Email');
        $message->from('[email protected]','Ripon Uddin (Laravel Lover)');
    });

获取错误:

无法使用 3 个可能的身份验证器在 SMTP 服务器上使用用户名“[email protected]”进行身份验证。身份验证器登录返回 Swift_TransportException:预期响应代码 235,但收到代码“535”,并显示消息“535-5.7.8 用户名和密码未接受。了解更多信息,请访问 535 5.7.8 https://support.google.com/mail/ ?p=BadCredentials r18-v6sm7406256pgv.17 - gsmtp " 中

php laravel-5.6
6个回答
8
投票

您不需要 GSuite 来执行此操作...我已经多次使用 Laravel 和 GMail 进行此集成。只需转到您的 Google 帐户 > 安全 > 不太安全的应用程序访问,然后点击“打开访问(不推荐)”See image for more info


4
投票

转到此链接或gmail的应用程序密码页面,然后选择“邮件”作为“应用程序”,并将客户名称选择为“设备”。然后您将获得应用程序密码。 只需转到生产中的 config 文件夹下的 laravel mai.php 或开发模式下的 env 文件即可。将生成的代码粘贴到密码部分

'password' => 'generated code',
全部跑完后:
php artisan config:cache


4
投票

Google 更改了其安全政策。现在,“允许安全性较低的应用程序”选项在“登录和安全性”下不可用。

Gmail 的想法是,即使使用真实的用户名和密码,Gmail 也不允许任何应用程序访问用户的 Gmail 帐户。这就是人们收到错误的原因。新机制是您应该在您的 Google 帐户中创建一个应用程序,Google 将为该应用程序生成一个密码。 Gmail 将允许使用该密码和真实用户名/Gmail ID 进行访问。

解决办法是

第 1 步: 登录您的 Gmail 帐户并“管理您的帐户”,如下图所示

第 2 步: 单击左侧边栏中的“安全”选项卡,

第 3 步: 首先为 SMTP 访问启用两步验证。

在启用两步验证之前,您将不会看到“应用程序密码”选项。 启用两步验证后,单击“应用程序密码”。你会看到这样的

如果您仍然没有看到“应用程序密码”选项,请在搜索栏中搜索它,如下所示。

第 4 步: 现在点击它。

单击第一个下拉菜单并选择“其他(自定义名称)”。在新窗口中写下您的应用程序名称并按下“生成”按钮。复制显示的密码。

使用此密码,而不是您的真实 Gmail 密码。 SMTP 配置应该如下所示


2
投票

如果您在 Gmail 设置中启用了“允许安全性较低的应用程序”设置,则此配置适用于 Gmail

mailer_transport: smtp
mailer_host: smtp.gmail.com
mailer_port: 465
mailer_encryption: ssl
mailer_auth_mode: login
mailer_user: [email protected]
mailer_password: "xxxx"

如果您在 Gmail 设置中将服务器的 IP 列入白名单,则此功能适用于 Gmail Suite(请参阅 https://support.google.com/a/answer/2956491):

mailer_transport: smtp
mailer_host: smtp-relay.gmail.com
mailer_port: 587
mailer_encryption: tls
mailer_auth_mode: login
mailer_user: [email protected]
mailer_password: "xxxx"

2
投票

确保 .env 文件中的用户凭据正确。

尝试将密码放在引号中。例如:MAIL_PASSWORD =“我的密码”

要应用更改,请运行

php artisan 配置:缓存


0
投票

您是否打开了“允许安全性较低的应用程序”?转到此链接

https://myaccount.google.com/security#connectedapps

查看“登录和安全”->“具有帐户访问权限的应用程序”菜单。

您必须打开“允许安全性较低的应用程序”选项。

© www.soinside.com 2019 - 2024. All rights reserved.