我知道Perl Mime::Lite已被弃用,但我必须在只安装了Mime::Lite的托管服务器上工作。该服务器还将每小时可发送的电子邮件数量限制为500封。
我有一个很大的参与者列表,需要通过电子邮件向他们发送填写问卷的说明,如果他们几周后还没有完成调查问卷,还需要提醒。我有一个脚本,检查他们是否已经完成了他们的问卷调查,以及是否应该和已经发送了提醒。否则将发送提醒。但是,我必须将每小时发送的电子邮件数量限制在500封。
有没有办法告诉Mime::Lite发送500封电子邮件,等待一个小时,然后再发送500封其他电子邮件,或者我需要使用外部文件在perl中自己编写程序:发送500封电子邮件,标记这些电子邮件已经发送以及发送的时间。每次运行脚本时,它都会再次检查是否必须发送电子邮件,以及最后一封电子邮件已发送的时间。如果距离当前时间超过一个小时,它将发送500封新电子邮件。
或者其他更方便的方式?
只是为了确认一下,我的电子邮件是合法的,并且是用户所期望的(和想要的)。
发布于 2013-05-28 18:27:43
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
}请注意,这取决于您的主机服务器是否允许您让一个进程运行足够的时间来处理整个列表。如果他们没有,那么你就需要建立一个数据库来跟踪所有已经被邮寄的收件人。
不过,老实说,使用真正的邮件列表软件来处理这件事可能会更好(也更容易),而不是编写自己的半功能列表服务器。也许你的托管服务也提供邮件列表?
https://stackoverflow.com/questions/16782012
复制相似问题