Laravel邮件奇怪的超时错误

时间:2017-02-21 11:23:58

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

我现在有一些问题。

我的应用程序正在向客户发送邮件 在过去的几个月里,我已将此应用程序迁移到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秒,但这没有帮助。

任何人都可以帮助我?

2 个答案:

答案 0 :(得分:0)

我有同样的问题,我的应用程序在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,
...
],

答案 1 :(得分:-1)

看起来像一个重复的问题: Swift_TransportException in AbstractSmtpTransport.php line 404: Connection to smtp.gmail.com:465 Timed Out

按照它的答案:

在根项目下打开.env文件。在其中编辑以下内容:

  

MAIL_DRIVER = SMTP

     

MAIL_USERNAME=youremail@host.com

     

MAIL_PASSWORD =你的密码

     

MAIL_HOST = smtp.gmail.com

     

MAIL_PORT = 587