使用gmail smtp-relay(数据库队列驱动程序)时出现laravel swift-mailer异常“预期响应代码为250,但得到的响应为空”

gcuhipw9  于 2022-12-14  发布在  Swift
关注(0)|答案(3)|浏览(396)

这gmail smtp-relay工作正常使用同步驱动程序,但是如果我们排队电子邮件我们这错误.清除配置,缓存,&重新启动队列worker.测试在生产和开发,相同的结果

[2021-01-24 20:04:22] production.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 /home/****/****/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:448)

我们想知道这是因为序列化和东西是不是使它通过该过程???使用laravel〉8.0的最新稳定版本. gmail smtp是认证刚刚好,根据为什么同步驱动程序发送电子邮件容易.也许有需要一个超时的队列作业,所以他们不会阻碍gmail这么快?我们的代码也工作正常,使用sendgrid例如作为smtp中继.谢谢.

wpx232ag

wpx232ag1#

请参阅https://laracasts.com/discuss/channels/laravel/laravel-swift-mailer-exception-expected-response-code-250-but-got-an-empty-response-using-gmail-smtp-relay-database-queue-driver
更新您的AppServiceProvider.php
添加此内部 Boot ();

// Fix for SwiftMailer Service; 

$_SERVER["SERVER_NAME"] = "your.domain.name";
gpfsuwkq

gpfsuwkq2#

对于smtp-relay.gmail.com的用户,如果您在开发过程中使用localhost/127.0.0.1作为域,您可能需要更改EHLO命令中使用的域名以开始事务。

smtp://smtp-relay.gmail.com:587?encryption=tls&local_domain=dev.mydomain.tld&...

对于SwiftMailer Symfony软件包(从2.4.0开始),您可以设置local_domain配置参数:

// config/packages/dev/swiftmailer.yaml
swiftmailer:
    ...
    local_domain: dev.mydomain.tld
stszievb

stszievb3#

前两个答案的解释
1.如果$_SERVER[“SERVER_NAME”]是解决方案:

  • 使用cron时
  • 原因是执行cron时$_SERVER[“SERVER_NAME”]为空。$_SERVER[“SERVER_NAME”]通常仅为http访问定义。
  • 实施示例(laravel):
if (!isset($_SERVER['SERVER_NAME'])) {
            $url = config('env.APP_URL');
            $domain = mb_ereg_replace("http(s)? ://", "", $url);
            $domainParts = explode('/', $domain);
            ini_set('server_name', count($domainParts) > 0 ? $domainParts[0] : $domain)
        }

1.如果“local_domain”是解决方案

由于我的环境中有cron消息传递和MAIL_HOST=smtp-relay.gmail.com,我不得不处理这两个问题。我希望这些信息对您有所帮助。

相关问题