Laravel 5:发送电子邮件

Posted

技术标签:

【中文标题】Laravel 5:发送电子邮件【英文标题】:Laravel 5: Sending Email 【发布时间】:2015-10-01 10:07:09 【问题描述】:

我正在尝试在 laravel 应用程序中发送电子邮件。 这是我的.env 文件:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=ehsan.sani91@gmail.com
MAIL_PASSWORD=**********
MAIL_ENCRYPTION=tls

这里是Mail::send 方法:

Mail::send('email', ['name' => "EE"], function($m)
            $m->to('ee@dx.com', 'Malik')->subject('Subjet of the email');
        );

这是错误:

Swift_TransportException in AbstractSmtpTransport.php line 383: Expected response code 250 but got code "530", with message "530 5.7.0 Must issue a STARTTLS command first. s16sm7748968wib.16 - gsmtp"

有什么帮助吗?

【问题讨论】:

你在哪里使用这个代码,本地的还是服务器的? 如果你的意思是 Mail::send(---) 代码,那么我在 Controller 中使用它。 我的意思是......你在本地主机或服务器上!? 这只是一个身份验证错误。我建议按照错误消息530 5.7.0 Must issue a STARTTLS command first. s16sm7748968wib.16 - gsmtp 的说明进行操作。 一个快速的谷歌得到这个...richardwillia.ms/blog/2010/12/swift-mailer-starttls - 我希望它有帮助 【参考方案1】:

如果上述cmets都不起作用,请尝试清除缓存:

php artisan cache:clear
php artisan config:clear

【讨论】:

这是建议还是答案?【参考方案2】:

我犯了以下错误: 我实际上并没有包括

'encryption' => env('MAIL_ENCRYPTION'),

到mail.php 中的数组返回。我确实在 mail.php 中包含了我的主机、端口、用户名和密码,但没有包含加密方法(我只包含在 .env 文件中的加密方法),所以尝试这些提到的解决方案确实会改变错误消息的结果,造成了更大的混乱,但没有一个解决问题。希望这对某人有帮助!

【讨论】:

【参考方案3】:

嗯,我明白了。事实上,该电子邮件未经过身份验证,因为该电子邮件在登录后需要手机身份验证。更改为只需要登录凭据的其他电子邮件地址,它起作用了。

.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=youremail@host.com
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=tls

【讨论】:

【参考方案4】:

GMail SMTP 需要加密。尝试如下更改设置。

 MAIL_PORT=465
 MAIL_ENCRYPTION=ssl

【讨论】:

尝试没有任何好处,给出错误:AbstractSmtpTransport.php 第 383 行中的 Swift_TransportException:预期响应代码 250 但得到代码“530”,消息“530 5.7.0 必须先发出 STARTTLS 命令。 w8sm20719292wja.15 - gsmtp" 邮件配置中'driver' => env('MAIL_DRIVER', 'smtp')的驱动程序设置是什么?? 这是驱动设置:'driver' => env('MAIL_DRIVER', 'smtp') 这是主机:'host' => env('MAIL_HOST', 'smtp.gmail.com'),这是邮件配置文件中的端口:'port' => env('MAIL_PORT', 465) 您的.env 文件MAIL_HOST 应该是:MAIL_HOST=smtp.gmail.comenv() 函数将尝试从 .env 加载变量或使用默认值:env('KEY', 'the default')。 (这是为遇到同样问题的人准备的)

以上是关于Laravel 5:发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5:发送电子邮件

使用 Laravel 5,如何确定 Mailgun 电子邮件是不是发送成功?

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

laravel 5.4 密码重置问题——发送邮件

如何使用 laravel 5 中的队列通过电子邮件发送密码重置链接

在 Laravel 5.4 中向多个抄送收件人发送电子邮件