在 Perl 中发送 SMTP 电子邮件的更快方法?
Posted
技术标签:
【中文标题】在 Perl 中发送 SMTP 电子邮件的更快方法?【英文标题】:Faster way to send SMTP emails in Perl? 【发布时间】: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 脚本?我真的不关心错误捕获。主要问题是尽快发送电子邮件
谢谢
【问题讨论】:
【参考方案1】:显而易见的方法是不实际从 Web 应用程序发送电子邮件。相反,将有关电子邮件的信息写入作业队列,并让另一个作业(可能从cron
运行)查看队列并发送任何需要发送的电子邮件。这样网页会立即返回,用户会在几分钟内收到邮件。
上次我尝试这样的事情时,The Schwartz 是最推荐的作业队列管理器之一。现在可能有人会推荐一些东西。
【讨论】:
我们使用本地邮件服务器作为这个作业队列。这具有经过验证的代码(本地 MTA)和没有接口更改的优点。以上是关于在 Perl 中发送 SMTP 电子邮件的更快方法?的主要内容,如果未能解决你的问题,请参考以下文章