Laravel 5.2邮件发送中的Swift_TransportException

时间:2016-02-12 05:47:22

标签: php email laravel-5 gmail

我正在尝试使用允许不太安全的应用:两步验证

从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

我该怎么做才能解决错误?我错过了什么?

5 个答案:

答案 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)