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