我有一個機器人回覆用戶。但有時候,當我的機器人發送它的回覆時,用戶或他們的電子郵件提供商將自動響應(假期消息,退回消息,來自郵件程序守護進程的錯誤等)。然後,這是來自用戶的一條新消息(所以我的機器人認爲),它反過來回復。郵件循環!如何製作電子郵件機器人回覆用戶不回覆自動回覆,並將自己納入郵件循環
我想讓我的機器人只回復來自真人的真實電子郵件。我目前正在過濾掉承認批量優先或郵件列表的電子郵件,或者將自動提交標題等於「自動回覆」或「自動生成」(請參閱下面的代碼)。但我想有一個更全面或標準的方式來處理這個問題。 (我很高興看到除Perl以外的其他語言的解決方案。)
注意:請記住有自己的機器人聲明它是自動回覆!包括
Auto-Submitted: auto-reply
在您的機器人的電子郵件的標題。
我的原始代碼避免郵件循環如下。只有在realmail返回true時纔會回覆。
sub realmail {
my($email) = @_;
$email =~ /\nSubject\:\s*([^\n]*)\n/s;
my $subject = $1;
$email =~ /\nPrecedence\:\s*([^\n]*)\n/s;
my $precedence = $1;
$email =~ /\nAuto-Submitted\:\s*([^\n]*)\n/s;
my $autosub = $1;
return !($precedence =~ /bulk|list|junk/i ||
$autosub =~ /(auto\-replied|auto\-generated)/i ||
$subject =~ /^undelivered mail returned to sender$/i
);
}
(主體檢查肯定是不必要的,我只是說這些檢查一次一個的問題出現了和上面現在看來工作,所以我不想去觸摸它,除非有一些明確更好。)
我個人更喜歡受時間限制的機器人(例如,一小時內最多發送一封電子郵件給一個人)。當我一次發送很多電子郵件時,我不喜歡收到大量的度假通知。 – notnoop 2009-11-29 03:25:43
好點,notnoop。無論你做什麼,像這樣的限速安全網都很聰明。 – dreeves 2009-11-29 03:28:18