Laravel 5.2 邮件发送中的 Swift_TransportException
Posted
技术标签:
【中文标题】Laravel 5.2 邮件发送中的 Swift_TransportException【英文标题】:Swift_TransportException in Laravel 5.2 mail sending 【发布时间】:2016-05-23 04:35:51 【问题描述】:我正在尝试使用 允许不太安全的应用程序:打开和两步验证关闭
的 gmail 帐户为我的 laravel 应用程序发送邮件.env 邮件部分:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=library@gmail.com
MAIL_PASSWORD=********
MAIL_ENCRYPTION=ssl
config/mail.php:
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => 'library@gmail.com', 'name' => 'Admin'],
'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
'username' => env('library@gmail.com'),
'password' => env('********'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => env('MAIL_PRETEND', false),
首先我尝试使用'encryption' => env('MAIL_ENCRYPTION','tls')
。但收到以下错误消息:
ERROR: exception 'Swift_TransportException' with message 'Expected
response code 250 but got code "530", with message "530-5.5.1
Authentication Required. Learn more at
530 5.5.1 https://support.google.com/mail/answer/14257
z3sm16020712par.17 - gsmtp"' in
/home/shafi/Projects/Lib/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:383
我访问了https://support.google.com/mail/answer/14257,发现一切都处于推荐状态。
之后我使用了'encryption' => env('MAIL_ENCRYPTION','ssl')
,但这次是相同的ERROR。
我应该怎么做才能修复错误?我错过了什么?
【问题讨论】:
【参考方案1】:访问 http://www.google.com/accounts/DisplayUnlockCaptcha 并使用您的 Gmail 用户名和密码登录。如果被问到,请输入扭曲图片中的字母。
注意:如果这仍然没有帮助,请重试该过程几次并等待,然后尝试从您的 Laravel 应用程序发送电子邮件。这应该可以解决问题。
【讨论】:
你的代码没问题。但是,Gmail 不允许您的 Laravel 应用程序登录到您的 Gmail 帐户,这就是您遇到此问题的原因。在这种情况下,请确保您已从 Gmail 帐户活动选项中允许您的 Laravel 应用程序,并尝试从允许不太安全的应用程序访问选项中更改一些设置。 如何允许来自 Gmail 帐户的 Laravel 应用程序?我试着做,但做不到。【参考方案2】:第 1 步:将您的 config/mail.php 恢复为原始文件。 config/mail.php 应该是这样的
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => 'library@gmail.com', 'name' => 'Admin'],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
第 2 步:.env 文件应该是这样的
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=library@gmail.com
MAIL_PASSWORD=whateverisyourpassword
MAIL_ENCRYPTION=ssl
端口是 465 而不是 587
第 3 步:通过粘贴适当的控制器函数来测试以下代码
\Mail::raw('This is an test e-mail', function ($message)
$message->to("someone@gmail.com", "someone");
$message->subject("hi checking");
$message->getSwiftMessage();
);
P.S:如果对 .env 文件进行了一些更改,永远不要忘记停止然后使用 php artisan serve
重新启动服务器。如果没有,那么您可能会被卷入时间迷宫。
【讨论】:
感谢您的努力。我试过了,但得到了同样的错误。 你确定你没有错过任何东西吗?我用两个不同的 gmail 帐户在 laravel 5.2 中测试了上面的代码,它正在工作。 您能分享您的项目存储库或与发送邮件相关的文件吗? 没有。以多种方式尝试但以相同的错误结束。 尝试将您的代码提供给新人。也许他们能找到你错过的东西【参考方案3】:对我来说,发送邮件只需在 .env 文件中添加正确的信息,如下所示:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your_gmail_email
MAIL_PASSWORD=your_gmail_password
MAIL_ENCRYPTION=tls
不要更改 mail.php 文件中的任何内容。您不希望到处都是您的电子邮件凭据。 .env 文件是用来存储所有这些的。
我还在该 Gmail 帐户上打开了对“不太安全的应用程序”的访问权限。
最后,运行:php artisan config:cache
希望对您有所帮助。
【讨论】:
【参考方案4】:我之前也遇到过同样的问题,根本原因是我更改了mail.php文件。
要使用 smtp.gmail.com 发送电子邮件,您只需更改 .env 文件中的配置并启用允许不太安全的应用程序。不要更改 mail.php 文件中的任何内容。
【讨论】:
【参考方案5】:我建议您花时间阅读:
https://phpnotebook.com/how-to-fix-swift_transportexception-530-in-laravel-5-7.html
【讨论】:
网址已更改:phpnotebook.com/… 这是一个不只分享链接答案的真实例子..以上是关于Laravel 5.2 邮件发送中的 Swift_TransportException的主要内容,如果未能解决你的问题,请参考以下文章
无法在 laravel 5.2 中发送没有发件人地址的消息我已经设置了 .env 和 mail.php
在 Laravel 5.2 中使用 mailchimp API
使用Laravel发送电子邮件错误“类Swift_Transport_Esmtp_AuthHandler不存在”
laravel 中的 Swift_TransportException 错误