【问题标题】:Laravel mail strange timeout errorsLaravel 邮件奇怪的超时错误
【发布时间】:2017-07-10 23:52:12
【问题描述】:

我有一些问题困扰了很长时间。

我的应用正在向客户发送邮件。
在过去的几个月里,我已将此应用程序迁移到 Laravel(目前为 5.4)。
很多时候我收到错误:

Swift_TransportException in AbstractSmtpTransport.php line 404:
Connection to my-smtp.company.com:25 Timed Out

问题是我无法摆脱此错误消息。
它发生在大约 10% 的情况下 - 或实时发送的排队任务和邮件。
奇怪的是,这些邮件实际上是发出的,但还是出现了错误。

我正在使用 Windows 服务器并以这种方式运行侦听器的排队邮件:

D:\php-7.1.1-x64\php.exe D:\wwwroot\myapp\artisan queue:listen --timeout=60 --tries=1

我已经进行了一些测试,看起来当错误抛出时,总是在触发队列作业或在浏览器中执行代码后 33-36 秒之后。

max_execution_time 的时间更改为 60 秒,但这没有帮助。

谁能帮帮我?

【问题讨论】:

标签: php laravel laravel-5 swiftmailer php-7


【解决方案1】:

我有同样的问题,我的应用在 Laravel 6.0 上运行

我的解决方案:

1) 创建自定义邮件服务提供商。

2) 使用 SwiftTransport 方法“setTimeout”。

<?php

namespace App\Providers;

use Illuminate\Mail\MailServiceProvider as MailProvider;
use Illuminate\Mail\TransportManager;

class MailServiceProvider extends MailProvider
{
    /**
     * Register the Swift Transport instance.
     *
     * @return void
     */
    protected function registerSwiftTransport()
    {
        $this->app->singleton('swift.transport', function ($app) {
            $transport = new TransportManager($app);
            $transport->setTimeout(config('mail.connection_timeout'));
            return $transport;
        });
    }

}

3) 替换 \config\app.php 中的提供程序配置

'provider' => [
...
// Illuminate\Mail\MailServiceProvider::class,
App\Providers\MailServiceProvider::class,
...
],

【讨论】:

    猜你喜欢
    • 2012-10-24
    • 2015-04-14
    • 1970-01-01
    • 2013-09-23
    • 2016-11-30
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    相关资源
    最近更新 更多