laravel 中的 Swift_TransportException 错误

Posted

技术标签:

【中文标题】laravel 中的 Swift_TransportException 错误【英文标题】:Swift_TransportException error in laravel 【发布时间】:2014-12-04 07:20:33 【问题描述】:

我正在尝试创建一个联系表单,将消息通过电子邮件发送到我的电子邮件地址。当我测试它时,我得到了这个错误

Swift_TransportException

预期响应代码为 250,但得到代码“530”,消息为“530 5.7.0 必须先发出 STARTTLS 命令。bv17sm3597476wib.13 - gsmtp”

这是我的控制器

public function contact()


     $data = array(
                'name' => Input::get('name')
                );


            Mail::send('emails.contact', $data, function($message)
                $message->to('test@gmail.com', 'Nikki')->subject('Login Details');
            );

这是我的contact.blade.php

 Form::open(array('id' => 'contact-frm', 'class' => 'contact-form', 'route' => 'contact')) 
 Form::label('fname', 'Name') 
 Form::text('fname') 

 Form::label('surname', 'Surname') 
 Form::text('surname') 

 Form::label('email', 'Email') 
 Form::text('email') 

 Form::label('message', 'Message') 
 Form::textarea('message') 

 Form::submit('Submit') 
 Form::close()

邮件.php

'driver' => 'smtp',
'host' => 'smtp.gmail.com',
'port' => 587,
'from' => array('address' => 'myEmail@gmail.com', 'name' => "Nikki"),
'encryption' => 'tls',
'username' => 'myEmail@gmail.com',
'password' => 'MyPassword',
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,

【问题讨论】:

请显示您的邮件配置。看来你没有设置好 我已经更新了我的问题以获得 mail.php 您是否尝试使用 gmail 的 SSL 而不是 TLS? (ssl/ 端口 465 )? 我收到此错误“无法与主机 smtp.gmail.com 建立连接 [操作超时 #60]” 哦,好吧,关于这个问题的另一个选择是尝试设置encryption => '' 【参考方案1】:

在 Laravel 5 中,问题来自 .env 文件。 Laravel 附带了一个用于加密的值,它会覆盖 config/mail.php 中的默认设置。在 .env 中,将 MAIL_ENCRYPTION=null 更改为 MAIL_ENCRYPTION=tls 即可。

【讨论】:

【参考方案2】:

更改.env时需要重启服务器

【讨论】:

【参考方案3】:

检查您的.env 文件。

我正在使用 mailgun

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=1230
MAIL_USERNAME=user@domain.com
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=tls

MAILGUN_DOMAIN=user@domain.com
MAILGUN_SECRET=null

我遇到了同样的问题,我的错是MAIL_ENCRYPTION 输入错误。

【讨论】:

【参考方案4】:

更改.env时需要重启服务器或在linux终端运行

php artisan config:cache  

【讨论】:

这个问题没有说明“.env”。也许您可以澄清那是什么,为什么您认为它已被更改,以及您建议的解决方案是如何工作的。【参考方案5】:

在 .env 文件“smtp to sendmail”中更改您的邮件驱动程序,它适用于我的情况。

MAIL_DRIVER=sendmail

【讨论】:

以上是关于laravel 中的 Swift_TransportException 错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:laravel Blade 文件中的权限被拒绝

如何将控制器中的 Laravel 4.2 beforeFilter 转换为 Laravel 5.2 中的自定义中间件

为啥 laravel 中的刀片文件不显示?

1+X web中级 Laravel学习笔记——Laravel中的路由

Laravel 中的闭包是啥?

从 Laravel 中的 .env 获取 .data 到 Laravel Nova Card - vue 组件