在 Perl 中发送 SMTP 电子邮件的更快方法?
Faster way to send SMTP emails in Perl?
我们使用 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 脚本?我真的不关心错误捕获。主要问题是尽快发出电子邮件
谢谢
显而易见的方法是不实际从 Web 应用程序发送电子邮件。相反,将有关电子邮件的信息写入作业队列并让另一个作业(可能 运行 来自 cron
)查看队列并发送任何需要发送的电子邮件。这样网页 returns 会立即显示,用户会在几分钟内收到邮件。
上次我尝试这样的事情时,The Schwartz 是最受推荐的作业队列管理器之一。人们现在可能会推荐一些东西。
我们使用 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 脚本?我真的不关心错误捕获。主要问题是尽快发出电子邮件
谢谢
显而易见的方法是不实际从 Web 应用程序发送电子邮件。相反,将有关电子邮件的信息写入作业队列并让另一个作业(可能 运行 来自 cron
)查看队列并发送任何需要发送的电子邮件。这样网页 returns 会立即显示,用户会在几分钟内收到邮件。
上次我尝试这样的事情时,The Schwartz 是最受推荐的作业队列管理器之一。人们现在可能会推荐一些东西。