我现在有一些问题。
我的应用程序正在向客户发送邮件 在过去的几个月里,我已将此应用程序迁移到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秒,但这没有帮助。
任何人都可以帮助我?
答案 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