尝试让Laravel 5电子邮件正常工作

2022-08-30 06:43:52

我尝试通过键入 URL 向指定用户发送电子邮件,但我收到以下错误:

Swift_TransportException摘要SmtpTransport.php行383:预期响应代码250,但收到代码“530”,消息“530 5.7.1需要身份验证”

到目前为止,我只是试图让它与Gmail一起使用。我怎样才能让它工作?

这就是我到目前为止所拥有的:邮件.php

<?php
    return [
        'driver' => env('MAIL_DRIVER',' smtp'),
        'host' => env('MAIL_HOST', 'smtp.gmail.com'),
        'port' => env('MAIL_PORT', 587),
        'from' => ['address' =>"MyUsername@gmail.com" , 'name' => "example"],
        'encryption' => 'tls',
        'username' => env('MyUsername@gmail.com'),
        'password' => env('MyPassword'),
        'sendmail' => '/usr/sbin/sendmail -bs',
        'pretend' => false,
    ];

这是我在路线中所拥有的:

Route::get('test', function() {
    Mail::send('Email.test', [], function ($message) {
        $message->to('example@gmail.com', 'HisName')->subject('Welcome!');
    });
});

这是我在控制器中所拥有的:

class MailController extends Controller
{
    public function Sending_Email()
    {
        $this->call('GET','Email.test');
        return View('Email.test');
    }
}

这就是我的.env文件中的内容:

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

答案 1

我知道它现在对你有用,@Vantheman6但这就是对我有用的东西,以防万一它对其他人也是如此。

我在 .env 文件中添加了我正在使用的邮件服务的详细信息。因此,请确保以下详细信息

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

在 .env 文件中是准确的。

注意:不要忘记在编辑 .env 文件后重新启动服务器,以便它选取您放入其中的新数据。

使用以下命令清除配置缓存:

php artisan config:cache

如果不重新启动服务器,.env 文件仍将继续向应用显示旧邮件数据,即使您所做的更改可能导致此错误也是如此。


答案 2

我的.env文件配置是这样的,适用于laravel 5.1

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=example@gmail.com
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=tls

这里最重要的是我创建了gmail应用程序专用密码(16位数字)。

我需要透露另一件事,因为任何配置都没有运气。也就是说,每当我更改.env文件需要运行此命令时

php artisan config:cache

这是最重要的,因为如果没有此命令,laravel会从其缓存中执行以前的设置。我花了10个多小时才弄清楚。


推荐