![](/img/trans.png)
[英]Perl - Having trouble using MIME::Lite with authentication to send emails
[英]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.