在本地主机上的 laravel 8 中发送电子邮件时出现“无法与主机 smtp.gmail.com 建立连接:stream_socket_client()”错误

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

我正在尝试在我的 laravel 应用程序中使用 gmail smtp 发送电子邮件,该应用程序昨天工作正常并且正在发送电子邮件,但今天它给了我这个错误。我尝试了所有可能的方法,但还没有弄清楚问题出在哪里。任何帮助,将不胜感激。谢谢你。

这是我的 smtp 服务器的 .env 设置

    MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myemail
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=myemail
MAIL_FROM_NAME="${APP_NAME}"

我尝试改变

 MAIL_PORT= 465
 MAIL_ENCRYPTION = ssl

我也变了

MAIL_MAILER = sendmail

它仍然给我同样的错误。我还允许从谷歌访问不安全的应用程序,但错误没有消失。

php email smtp laravel-8 laravel-mail
2个回答
0
投票

您可以尝试禁用SSL验证来检查问题所在。打开您的

config/mail.php
文件并添加
stream
选项,如下所示:

<?php

return [
    'mailers' => [
        'smtp' => [
            'transport' => 'smtp',
            'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
            'port' => env('MAIL_PORT', 587),
            'encryption' => env('MAIL_ENCRYPTION', 'tls'),
            'username' => env('MAIL_USERNAME'),
            'password' => env('MAIL_PASSWORD'),
            'timeout' => null,
            'auth_mode' => null,
            // region Disable SSL Verify
            'stream' => [
                'ssl' => [
                    'allow_self_signed' => true,
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                ],
            ],
            // endregion
        ],
    ],
];

注意: 由于安全原因,此方法是确定问题的唯一测试方法,并非最终解决方案。


0
投票

这对我有用。你可以试试这个方法。

这一行

MAIL_ENCRYPTION=ssl to null
更改.env文件

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myemail
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=myemail
MAIL_FROM_NAME="${APP_NAME}"

如果也没有效果尝试切换邮件端口

MAIL_PORT=465

之后,使用以下命令清除配置缓存:

php artisan config:cache

php artisan optimize:clear
© www.soinside.com 2019 - 2024. All rights reserved.