2013-05-27 66 views
0

我知道Perl Mime :: Lite已被棄用,但我必須在只安裝Mime :: Lite的託管服務器上工作。該服務器還限制每小時可發送500封電子郵件的數量。每小時發送一定數量的電子郵件與Perl Mime :: Lite

我有一個參與者的大名單,需要通過電子郵件發送說明來填寫問卷和提醒,如果他們在幾周後還沒有完成問卷調查。我有一個腳本,用於檢查他們是否已完成問卷調查,以及是否應提醒您是否已發送提醒。否則會發送提醒。但是,我必須將發送的郵件數量限制爲每小時500個。

有沒有辦法告訴Mime :: Lite發送500封電子郵件,等待1小時,然後發送500封其他郵件,還是我需要使用外部文件在perl中編寫自己的程序:發送500封電子郵件,標記這些電子郵件已發送並在什麼時間發送。每次腳本運行時,都會再次檢查是否需要發送電子郵件以及最後一封電子郵件的發送時間。如果距離當前時間超過一小時,它會發送500封新電子郵件。

還是其他更方便的方法?

可以肯定的是,我的電子郵件是合法的,用戶期望的(和想要的)。

+0

@yvytty:許多機構使用您的信息,使用訂戶列表。用戶:這意味着想要從特定組織接收信息的人。 – Fred

+1

我沒有說這個流量連續幾個月...... 5000個人發郵件,檢查是否需要發送提醒等等。不想用手做這個... – Fred

回答

1

Mime :: Lite本身並沒有實現這一點,但它很容易實現自己。假設你有一個子send_to($recipient, $msg)實際使用的Mime ::精簡版發送消息,你可以用類似包裝它:

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 
} 

注意,這是你的主機服務器讓您保持一個進程中運行的特遣隊足夠的時間來完成整個列表。如果他們不這樣做,那麼你需要用數據庫來處理一些事情,以跟蹤​​所有收件人以及哪些收件人已被郵寄到。

儘管如此,使用真正的郵件列表軟件來處理這個問題可能會更好(也可能更容易),而不是編寫自己的半功能列表服務器。也許你的託管服務也提供郵件列表?

+0

謝謝,這就是我正在尋找。 (當然,睡眠!)關於託管服務的好評可能不允許這樣長時間的運行過程。如果運行不正常,我會嘗試轉向數據庫。 – Fred

相關問題