用于 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] 建立连接