【问题标题】:Faster way to send SMTP emails in Perl?在 Perl 中发送 SMTP 电子邮件的更快方法?
【发布时间】:2020-08-06 18:19:00
【问题描述】:

我们使用 SMTP 从我的网站发送电子邮件。使用 Email::MIME 构建,然后 Email::Sender::Transport::SMTP 将其传递到我们的 SMTP 服务器进行发送:

my $transport = Email::Sender::Transport::SMTP->new({
    host => 'smtp.gmail.com',
    port => 465,
    ssl => 1,
    sasl_username => 'hello@foo.com',
    sasl_password => 'xxxx'
});

sendmail($email,{ to  => ['andy@foo.com'] });

我的问题是它太慢了! (每封电子邮件至少需要 4-5 秒,如果您向客户发送一封电子邮件 + 向我们(管理员)发送一封电子邮件,则需要 10 秒。我们不断让人们认为该网站已损坏,因为它似乎挂起

所以我的问题 - 我如何发送 SMTP 电子邮件,而不必挂起 Perl 脚本?我真的不关心错误捕获。主要问题是尽快发送电子邮件

谢谢

【问题讨论】:

    标签: perl smtp


    【解决方案1】:

    显而易见的方法是不实际从 Web 应用程序发送电子邮件。相反,将有关电子邮件的信息写入作业队列,并让另一个作业(可能从cron 运行)查看队列并发送任何需要发送的电子邮件。这样网页会立即返回,用户会在几分钟内收到邮件。

    上次我尝试这样的事情时,The Schwartz 是最推荐的作业队列管理器之一。现在可能有人会推荐一些东西。

    【讨论】:

    • 我们使用本地邮件服务器作为这个作业队列。这具有经过验证的代码(本地 MTA)和没有接口更改的优点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2022-07-20
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 2019-01-23
    相关资源
    最近更新 更多