我正试图在我的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
],
],
];
注意:由于安全原因,此方法是确定问题的唯一测试方法,而不是最终解决方案。
它对我有用。你可以试试这种方法。
env文件中的这一行MAIL_ENCRYPTION=ssl to null
更改
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