在 Perl 中发送 SMTP 电子邮件的更快方法?

And*_*wby 3 perl smtp

我们使用 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'] });
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Dav*_*oss 6

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

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