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

Posted

技术标签:

【中文标题】用于 laravel 5 邮件发送的 Gmail 设置【英文标题】:Gmail setup for laravel 5 mail send 【发布时间】:2016-03-23 08:32:39 【问题描述】:

我将此设置为通过 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 上工作——如果这些信息对你有帮助的话。]

【问题讨论】:

尝试设置加密 => '' 或同时更改端口和加密:'port' => 465, 'encryption' => 'ssl' 新项目的相同设置成功运行。使用 465 而不是 587 端口有什么区别? 【参考方案1】:

465和587端口的区别:

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

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

(source)

所以如果你想使用端口号 587,你应该在设置中将加密设置为空,但对于 465,设置 'ssl' 为加密将解决问题:

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

'host' => 'smtp.gmail.com',
'port' => 587, 
'encryption' => '',

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

不知道发生了什么。

port 587 应该可以工作。

您会尝试创建一个新项目并像您在此处编写的那样配置设置吗?

我认为这里的一切都很好。您的项目设置可能存在其他问题。

一旦我遇到这样的事情并创建一个对我有用的新项目。

【讨论】:

以上是关于用于 laravel 5 邮件发送的 Gmail 设置的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.5 发送电子邮件没有响应 smtp.gmail.com #10060

无法在 laravel 5.6 电子邮件发送中与主机 smtp.gmail.com [连接被拒绝 #111] 建立连接

Laravel 5:发送电子邮件

Laravel 5.2 邮件发送中的 Swift_TransportException

发送 TLS 电子邮件时 Laravel 证书验证错误

Laravel 密码重置电子邮件未在 Heroku 上使用 gmail 发送