首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Perl Mime::Lite每小时发送有限数量的电子邮件

使用Perl Mime::Lite每小时发送有限数量的电子邮件
EN

Stack Overflow用户
提问于 2013-05-28 07:59:52
回答 1查看 240关注 0票数 0

我知道Perl Mime::Lite已被弃用,但我必须在只安装了Mime::Lite的托管服务器上工作。该服务器还将每小时可发送的电子邮件数量限制为500封。

我有一个很大的参与者列表,需要通过电子邮件向他们发送填写问卷的说明,如果他们几周后还没有完成调查问卷,还需要提醒。我有一个脚本,检查他们是否已经完成了他们的问卷调查,以及是否应该和已经发送了提醒。否则将发送提醒。但是,我必须将每小时发送的电子邮件数量限制在500封。

有没有办法告诉Mime::Lite发送500封电子邮件,等待一个小时,然后再发送500封其他电子邮件,或者我需要使用外部文件在perl中自己编写程序:发送500封电子邮件,标记这些电子邮件已经发送以及发送的时间。每次运行脚本时,它都会再次检查是否必须发送电子邮件,以及最后一封电子邮件已发送的时间。如果距离当前时间超过一个小时,它将发送500封新电子邮件。

或者其他更方便的方式?

只是为了确认一下,我的电子邮件是合法的,并且是用户所期望的(和想要的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-28 18:27:43

Lite本身并没有实现这一点,但是很容易自己实现。假设您有一个实际使用Mime::Lite发送消息的子send_to($recipient, $msg),您可以用下面这样的代码包装它:

代码语言:javascript
复制
my $msg = ...;
my @recipients = ...;
while (@recipients) {
  for (1 .. 500) {
    last unless @recipients; # batch is implicitly over if we're out of people to send to
    send_to(shift @recipients, $msg);
  }
  sleep 3600 if @recipients;  # wait an hour before the next batch
}

请注意,这取决于您的主机服务器是否允许您让一个进程运行足够的时间来处理整个列表。如果他们没有,那么你就需要建立一个数据库来跟踪所有已经被邮寄的收件人。

不过,老实说,使用真正的邮件列表软件来处理这件事可能会更好(也更容易),而不是编写自己的半功能列表服务器。也许你的托管服务也提供邮件列表?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16782012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档