gpt4 book ai didi

perl - 如何使回复用户的电子邮件机器人不回复自动回复并进入邮件循环

转载 作者:行者123 更新时间:2023-12-04 03:41:33 24 4
gpt4 key购买 nike

我有一个回复用户的漫游器。但是有时,当我的机器人发送答复时,用户或其电子邮件提供商会自动答复(度假消息,退信消息,mailer-daemon错误)等。然后,这是来自用户的新消息(我的机器人认为),该消息又得到答复。邮件循环!

我希望我的机器人只回复来自真实人类的真实电子邮件。我目前正在过滤允许优先处理大量邮件或从邮件列表接收的电子邮件,或者自动提交的 header 等于“自动回复”或“自动生成”的电子邮件(请参见下面的代码)。但是我想有一种更全面或更标准的方式来处理此问题。 (很高兴看到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
);
}

(主题检查肯定是不必要的;由于出现问题,我一次只添加了一次这些检查,而上述检查现在似乎可以正常工作,因此除非有明显的改进,否则我不想触摸它。)

最佳答案

RFC 3834提供了有关您应该做什么的一些指导,但是这里有一些具体的指导:

将您的信封发件人设置为与自动回复人不同的电子邮件地址,以使退回邮件不会反馈到系统中。

我总是在数据库中存储何时将电子邮件响应从特定地址发送到另一个地址的 key 。在任何情况下,我都不会在10分钟内多次回应相同的地址。仅此一项就停止了所有循环,但不能确保行为良好(对邮件列表的自动响应很烦人)。

确保添加其他人匹配的 header 的任何排列以停止循环。这是我使用的列表:


X-Loop: autoresponder
Auto-Submitted: auto-replied
Precedence: bulk (autoreply)

这是一些头正则表达式,我可以使用它们来避免循环并尝试很好地发挥作用:

/^precedence:\s+(?:bulk|list|junk)/i
/^X-(?:Loop|Mailing-List|BeenThere|Mailman)/i
/^List-/i
/^Auto-Submitted:/i
/^Resent-/i

如果其中任何一个是信封发件人,我也将避免响应:

if ($sender eq ""
|| $sender =~ /^(?:request|owner|admin|bounce|bounces)-|-(?:request|owner|admin|bounce|bounces)\@|^(?:mailer-daemon|postmaster|daemon|majordomo|ma
ilman|bounce)\@|(?:listserv|listsrv)/i) {

关于perl - 如何使回复用户的电子邮件机器人不回复自动回复并进入邮件循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1814528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com