【问题标题】:Laravel Mail Facade very slow sending email with local SMTPLaravel Mail Facade 使用本地 SMTP 发送电子邮件非常慢
【发布时间】:2017-10-31 02:11:12
【问题描述】:

我正在尝试使用 Laravel 的 Mail 外观发送电子邮件。 5.3.我正在使用我公司的本地 SMTP 服务器。它非常缓慢,比每秒一封电子邮件还多。无论如何要加快速度?我已经用谷歌搜索了一种建立连接、保持打开状态并重复使用它的方法,但没有骰子。我已经触发了这个异步,所以排队不会有太大帮助,它只会进一步降低速度。

foreach($customers as $customer) {

    //build $params, $sendTo, $subject

    Mail::send(array('myemailview',null), $params,
        function($message) use ($sendTo, $subject)
        {
            $message
            ->to([$sendTo])
            ->subject( $subject );

        });
}

【问题讨论】:

  • 可能是对 SMTP 端的故意限制?
  • 据我所知,Laravel 不会做任何节流。 SMTP 服务器会受到限制吗?您能否分析代码以确定挂断的位置 - 建立 SMTP 连接是否需要很长时间,是否需要等待等?
  • 我还遇到了一个问题,即当邮件服务器被错误地配置为使用不存在的退回服务器时,它会尝试解决并且在失败之前不会发送邮件。无论如何,这听起来很像托管问题,而不是 laravel 问题。

标签: php laravel email smtp


【解决方案1】:

即使使用性能最好的邮件服务器,同步发送电子邮件也会导致延迟。最重要的是,您正在循环运行它。

首先要做的是将邮件排队。 sync 默认队列不做任何事情,它只是正常运行作业直到完成。您需要设置一个专用队列,如数据库或 redis。然后将您的邮件推送到队列中。仅此一项就可以立即消除所有缓慢,这与您所说的排队会使情况变得更糟相反。

其次,如果您的邮件具有相同的布局和内容,请考虑使用密件抄送向所有用户发送一封邮件。

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 2017-09-13
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    相关资源
    最近更新 更多