用于laravel 5邮件发送的Gmail设置


Gmail setup for laravel 5 mail send

我设置为通过laravel 5从我的gmail帐户发送邮件。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=********@gmail.com //email address
MAIL_PASSWORD="*******" //password for that email
MAIL_ENCRYPTION=tls

为了测试邮件发送,我使用了这个

Route::get('/email', function(){
$data = array(
    'name' => "Library",
    );
Mail::send('mailview',$data,function($message){
    $message->from('*******@gmail.com','Library');
    $message->to('*******@gmail.com')->subject('Confirmation mail.');
});
return "A email has been sent to you. Check inbox. Also check spambox if not in inbox.";});

但这给了我以下错误。

AbstractSmtpTransport.php第383行中的Swift_TransportException:应为响应代码250,但得到的代码为"530",消息为"530 5.7.0必须首先发出STARTTLS命令。g20sm4065212pfd.55-gsmtp"

我在谷歌上搜索了一下,发现了一些关于SO的问题。到目前为止,我们已经了解到gmail安全设置是罪魁祸首。但没有找到任何答案来描述如何解决这个问题。现在我想知道我应该如何配置我的gmail帐户?[假设我刚刚创建了一个新的gmail帐户。如果这些信息对你有帮助,请在linux mint上工作。]

端口465和587之间的差异:

端口465用于smtps-SSL加密在任何SMTP级别的通信之前自动启动。

端口587适用于msa-它几乎类似于标准SMTP端口。如果服务器支持STARTTLS命令,并且您的ISP没有过滤服务器的EHLO回复,则SSL加密可以通过SMTP级别的STARTTLS指令启动(2014年11月报道)。

(来源)

因此,如果您想使用端口号587,您应该在设置中将加密设置为空,但对于465,将"ssl"设置为加密将解决问题:

'host' => 'smtp.gmail.com',
'port' => 465, 
'encryption' => 'ssl',

'host' => 'smtp.gmail.com',
'port' => 587, 
'encryption' => '',
不确定发生了什么。

port 587应该起作用。

你会尝试创建一个新项目并像你在这里写的那样配置设置吗?

我觉得这里一切都还好。您的项目设置可能存在其他问题。

有一次我遇到了这样的事情,创建一个新项目对我来说很有效。

也许您需要在gmail帐户中启用不太安全的应用程序访问。