Laravel SMTP通过接收空响应的队列发送电子邮件

Laravel SMTP通过接收空响应的队列发送电子邮件,laravel,smtp,gmail,Laravel,Smtp,Gmail,我正在运行Laravel 6.20.0,从昨天开始,当我的队列工作人员尝试发送电子邮件时,我遇到以下错误: Swift_TransportException: Expected response code 250 but got an empty response in public_html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:448 从昨天开始,我已经多次尝

我正在运行Laravel 6.20.0,从昨天开始,当我的队列工作人员尝试发送电子邮件时,我遇到以下错误:

Swift_TransportException: Expected response code 250 but got an empty response in public_html/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:448
从昨天开始,我已经多次尝试重新查询我的电子邮件,但当它试图发送邮件时,我一直收到相同的错误。这在过去的将近一年中一直运作良好,所以我有点困惑是什么导致了这个问题。我最近没有更改任何凭据,也没有更改任何代码或配置

我的邮件设置如下:

MAIL_DRIVER=smtp
MAIL_HOST="smtp-relay.gmail.com"
MAIL_PORT=587
MAIL_USERNAME="my@user.name"
MAIL_PASSWORD="myapppassword"
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="my@from.address"
MAIL_FROM_NAME="My Name"
我已经在我的Google管理员中进行了双重检查,我的服务器的IPv4地址和IPv6地址都已被列入白名单,并且SMTP中继服务已启用。我还在我的谷歌账户中创建了一个新的应用程序密码,看看这是否能解决这个问题——但运气不好


我还清除了配置缓存(并尝试了php-artisan-config:cache),并尝试重新启动管理器,该管理器运行为电子邮件队列运行任务的工作程序。我也尝试过一个接一个地重新设置电子邮件的标题,以防触发某种限制,但没有效果。我的网站绝对不会发送很多电子邮件,大约每月100封,这在我的电子邮件帐户的限制之内。(我现在得到我认为您需要将邮件端口更改为25,如下所示:
MAIL_PORT=25

与谷歌工作区代表交谈 作为他们要求使用的临时解决方案

smtp.gmail.com
而不是
smtp relay.gmail.com

参与了我们的两个项目

另外,工作区中每个帐户的电子邮件数量限制为130封(以前的Gsuite) 例如,如果您有5个用户,则5x130=650

代表所说的哈哈:)

只是面临着同样的问题。 在我的例子中,SMTP发送在我尝试发送没有队列的电子邮件时起作用。 但是,当我尝试使用队列发送具有相同配置的相同电子邮件时,我遇到了如下错误:

[2021-02-15 12:43:24] local.ERROR: Expected response code 250 but got an empty response {"exception":"[object] (Swift_TransportException(code: 0): Expected response code 250 but got an empty response at /app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:448)
[stacktrace]
#0 /app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(345): Swift_Transport_AbstractSmtpTransport->assertResponseCode('', Array)
#1 /app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php(305): Swift_Transport_AbstractSmtpTransport->executeCommand('HELO [127.0.0.1...', Array, Array, false, NULL)
#2 /app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(368): Swift_Transport_EsmtpTransport->executeCommand('HELO [127.0.0.1...', Array)
#3 /app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php(341): Swift_Transport_AbstractSmtpTransport->doHeloCommand()
#4 /app/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(148): Swift_Transport_EsmtpTransport->doHeloCommand()
经过长期研究,我发现这个问题与
HELO
命令本身有关。 正如您在日志中清楚地看到的,出于某种原因(可能是服务器主机名),存在
127.0.0.1
IP地址,谷歌正在阻止该地址

我是如何决定的: 为了解决这个问题,我在
artisan
文件中添加了一行:

$\u服务器['SERVER\u NAME']='mydomain.com'

因此,我的artisan文件现在如下所示:

#/usr/bin/env-php

这不起作用,smtp-relay.gmail.com需要端口587,并按照此处的指定启用TLS:此处存在相同的问题。从昨天起,我们在Google App Engine上托管的一些应用程序中也看到了这一问题。使用Swiftmailer在本地测试,效果很好。我们在谷歌计算引擎上也遇到了同样的问题,昨天也注意到了,也许这是一个全球性的问题?你在使用哪种云?似乎我遇到过在谷歌云上有同样问题的人。@我使用的是本地托管公司的VPS。不幸的是,这个解决方案不适合我。同样的错误。谢谢你的回答。我无法验证您的解决方案是否也适用于我,因为在此期间我已切换到其他电子邮件提供商(因为这只花了我2分钟)。希望它能为其他通过谷歌来到这里的有同样/类似问题的人起作用。无论如何,我都投了赞成票。