我正在尝试在我的 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
它仍然给我同样的错误。我还允许从谷歌访问不安全的应用程序,但错误没有消失。
您可以尝试禁用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
],
],
];
注意: 由于安全原因,此方法是确定问题的唯一测试方法,并非最终解决方案。
这对我有用。你可以试试这个方法。
这一行
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