无法使用SMTP Gmail服务器发送电子邮件身份验证

时间:2018-12-11 14:38:09

标签: php laravel laravel-5 gmail

我正在尝试发送用户电子邮件验证。我已经更新了环境和邮件配置以适合我的Google Mail。但是,我遇到了Swift_TransportException (530)错误。

.env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=okaydots@gmail.com
MAIL_PASSWORD=

mail.php

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.gmail.com'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'okaydots@gmail.com'),
        'name' => env('MAIL_FROM_NAME', 'Kyle Jeynes'),
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('okaydots@gmail'),
    'password' => env(''),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend'  => false,
    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
    'log_channel' => env('MAIL_LOG_CHANNEL'),
];

User.php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;

    protected $fillable = [
        'name', 'email', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
}

web.php

Route::get('/', function () {
    return view('welcome');
});

Auth::routes(['verify' => true]);

Route::get('/home', 'HomeController@index')->name('home');

HomeController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('verified');
    }

    public function index()
    {
        return view('home');
    }
}

这是我收到的确切错误消息:

  

预期的响应代码为250,但代码为“ 530”,消息为“ 530-5.5.1要求身份验证。有关详细信息,请参见530 5.5.1 https://support.google.com/mail/?p=WantAuthError 133sm47765wme.9-gsmtp“

搜索完此错误后,被告知到Turn on less secure apps。这样做之后,我仍然收到相同的错误。如何允许Laravel发送电子邮件验证/电子邮件?

2 个答案:

答案 0 :(得分:1)

请还原您的mail.php。您只需要更改.env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=okaydots@gmail.com
MAIL_PASSWORD=     #use gmail app password not your gmail password
MAIL_ENCRYPTION=tls

答案 1 :(得分:0)

经过大量的Google搜索之后,我发现mail.php包含用于配置的env()方法,因此希望arg 1是.env文件中的配置名称。

我将mail.php更改为此,现在可以使用了:

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.gmail.com'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'okaydots@gmail.com'),
        'name' => env('MAIL_FROM_NAME', 'Kyle Jeynes'),
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'), # Changed
    'password' => env('MAIL_PASSWORD'), # Changed
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend'  => false,
    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
    'log_channel' => env('MAIL_LOG_CHANNEL'),
];
相关问题