繁体   English   中英

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

[英]Send a limited number of emails every hour with Perl Mime::Lite

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

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

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

还是其他更方便的方式?

可以肯定的是,我的电子邮件是合法的,并且受到用户(和通缉)的期望。

Mime :: Lite本身并未实现此功能,但您很容易实现。 假设您有一个实际上使用Mime :: Lite发送消息的子send_to($recipient, $msg) ,则可以将其包装为:

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
}

请注意,这取决于您的主机服务器,允许您将进程保持足够的时间运行以遍历整个列表。 如果没有,那么您将需要使用数据库来处理某些事情,以跟踪​​所有已被发送到的收件人。

不过,老实说,使用真实的邮件列表软件来处理此问题可能比编写自己的半功能列表服务器更好(也可能更容易)。 也许您的托管服务也提供邮件列表?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM