【问题标题】:Laravel mail sent but still throws exceptionLaravel 邮件发送但仍然抛出异常
【发布时间】:2020-02-02 08:21:51
【问题描述】:

我在 laravel 中这样发送电子邮件:

Mail::send('email.email_view', [] , function($message) {

    $message->to('email@gmail.com', 'Receiver Name')
            ->subject('TTTTTT');
});

视图“email.email_view”只包含这个:

test this

发生的情况是电子邮件被发送并且我在收件箱中收到它,但它仍然抛出此异常:

local.ERROR: 连接到 tcp://mail.myserver.net:2525 超时 {“异常”:“[对象](Swift_TransportException(代码:0):连接 到 tcp://mail.myserver.net:2525 超时 /home/public_html/test/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:473, Swift_IoException(代码:0):连接到 tcp://mail.myserver.net:2525 超时时间 /home/public_html/test/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:166) [堆栈跟踪]

如果您需要(stacktrace),请告诉我在哪里为你们将它放在网上,我知道有在线工具吗?

为什么会这样?如果过程中抛出异常,如何防止发送电子邮件?

【问题讨论】:

  • 当服务器关闭并且支持人员必须修复问题并使其重新运行时,此问题开始发生。因此,问题可能与他们为解决问题所做的工作有关。但我不能把手放在任何东西上!

标签: php laravel email swiftmailer


【解决方案1】:

错误回溯表明在套接字完成读取之前发生了超时。

https://github.com/swiftmailer/swiftmailer/blob/v6.2.1/lib/classes/Swift/Transport/StreamBuffer.php#L159

默认的15 seconds 在从打开到电子邮件服务器的套接字连接读取单个数据包之间有足够的时间间隔。

https://github.com/swiftmailer/swiftmailer/blob/v6.2.1/lib/classes/Swift/Transport/StreamBuffer.php#L279

我建议调查你的网络连接,或者看看为什么电子邮件服务器需要很长时间才能发回数据包。

作为最后的手段,您可以通过从服务容器解析Swift_Transport 实例并在其上调用setTimeout 方法来增加超时。在发送邮件之前执行此操作。

https://github.com/laravel/framework/blob/v6.4.0/src/Illuminate/Mail/MailServiceProvider.php#L103

app('swift.transport')->setTimeout(60);

【讨论】:

  • 现在,我们的支持人员已经修复了导致超时错误的两台服务器,我无法再对其进行测试。它现在发送电子邮件的速度如此之快,无一例外。但是我必须自己重新生成错误来报告错误。现在我不会再使用 swiftmailer 了。我会寻找另一个值得信赖的电子邮件客户端,并建议其他人也这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
相关资源
最近更新 更多