laravel 5邮件发送的Gmail设置

时间:2015-12-17 01:06:43

标签: php laravel-5 gmail swiftmailer

我将其设置为通过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   "

我用Google搜索并发现了与此相关的SO问题。并且到目前为止已经了解到gmail安全设置是罪魁祸首。但是没有找到任何答案来描述如何解决这个问题。 现在我想知道如何配置我的Gmail帐户? [假设我刚刚创建了一个新的gmail帐户。在linux上工作 - 如果此信息可以帮助您。]

3 个答案:

答案 0 :(得分:4)

端口465和587之间的差异:

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

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

source

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

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

OR

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

答案 1 :(得分:1)

不确定发生了什么。

port 587应该有用。

您是否会尝试创建新项目并配置您在此处所写的设置?

我认为这里的一切都没问题。您的项目设置可能还有其他问题。

一旦我面对这样的事情并创建一个适合我的新项目。

答案 2 :(得分:0)

也许您需要在Gmail帐户中启用Less Secure App Access。