사용자에게 응답하는 로봇이 있습니다. 하지만 때로는 내 봇이 답장을 보내면 사용자 또는 이메일 제공 업체가 자동 응답합니다 (휴가 메시지, 바운스 메시지, 메일러 데몬 오류 등). 그런 다음 사용자가 보낸 새 메시지 (내 봇이 생각하기에)가 차례로 응답합니다. 메일 루프!사용자에게 응답하는 전자 메일 봇을 자동 응답에 회신하지 않고 메일 루프로 가져 오는 방법
실제 로봇의 실제 이메일에만 답장을 보내고 싶습니다. 현재 대량 우선 순위 나 메일 링리스트에서 승인하는 이메일을 필터링하고 있거나 자동 제출 된 헤더가 "자동 응답 됨"또는 "자동 생성 됨"(아래 코드 참조)과 같습니다. 그러나이 문제를 다루는보다 포괄적 인 표준 방법이 있다고 상상해보십시오. (Perl 외에도 다른 언어의 솔루션도 제공하게되어 기쁩니다.)
NB : 자동 응답한다는 사실을 기억하십시오! 봇의 이메일 헤더에
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
좋은 점, notnoop. 당신이하는 일이 무엇이든, 속도 제한 안전망은 똑똑합니다. – dreeves