我正在尝试使用允许不太安全的应用:和两步验证
从gmail帐户发送我的laravel应用程序的邮件 邮件的.env 部分:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=library@gmail.com
MAIL_PASSWORD=********
MAIL_ENCRYPTION=ssl
配置/ mail.php :
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => 'library@gmail.com', 'name' => 'Admin'],
'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
'username' => env('library@gmail.com'),
'password' => env('********'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => env('MAIL_PRETEND', false),
首先我尝试使用'encryption' => env('MAIL_ENCRYPTION','tls')
。但得到以下错误消息:
ERROR: exception 'Swift_TransportException' with message 'Expected
response code 250 but got code "530", with message "530-5.5.1
Authentication Required. Learn more at
530 5.5.1 https://support.google.com/mail/answer/14257
z3sm16020712par.17 - gsmtp"' in
/home/shafi/Projects/Lib/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:383
我访问了https://support.google.com/mail/answer/14257,发现一切都处于推荐状态。
在此之后我使用'encryption' => env('MAIL_ENCRYPTION','ssl')
,但这次是 ERROR 。
我该怎么做才能解决错误?我错过了什么?
答案 0 :(得分:2)
访问http://www.google.com/accounts/DisplayUnlockCaptcha并使用您的Gmail用户名和密码登录。如果询问,请在扭曲的图片中输入字母。
注意:如果这仍然没有帮助,那么请多次重试该过程,然后等待尝试从您的Laravel应用程序发送电子邮件。这应该可以解决问题。
答案 1 :(得分:1)
第1步:将config / mail.php还原为原始文件。 config / mail.php应如下所示
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => 'library@gmail.com', 'name' => 'Admin'],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
第2步:.env文件应该是
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=library@gmail.com
MAIL_PASSWORD=whateverisyourpassword
MAIL_ENCRYPTION=ssl
端口 465 而非 587
第3步:通过粘贴适当的控制器功能
来测试以下代码\Mail::raw('This is an test e-mail', function ($message) {
$message->to("someone@gmail.com", "someone");
$message->subject("hi checking");
$message->getSwiftMessage();
});
P.S:如果对.env文件进行了一些更改,那么每次使用php artisan serve
时都不要忘记停止然后再次启动服务器。如果没有,那么你可能会陷入 The Labyrinth of Time 。
答案 2 :(得分:0)
对我来说,只需在.env文件中添加正确的信息即可发送邮件:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your_gmail_email
MAIL_PASSWORD=your_gmail_password
MAIL_ENCRYPTION=tls
不要更改mail.php文件中的任何内容。您不希望您的电子邮件凭据到处都是。 .env文件用于存储所有这些。
我还开启了访问"不太安全的应用程序"在该Gmail帐户上。
最后,运行:php artisan config:cache
希望这有帮助。
答案 3 :(得分:0)
我以前遇到过同样的问题,根本原因是我更改了mail.php文件。
要使用smtp.gmail.com发送电子邮件,您只需更改.env文件中的配置并启用允许安全性较低的应用。不要在mail.php文件中更改任何内容。
答案 4 :(得分:0)