10

任何人都可以推荐用于检查退回电子邮件和退回原因的软件或 .NET 库吗?我收到退回的电子邮件到我可以阅读的 pop3 帐户。

我需要它来保持我的用户数据库免受无效电子邮件地址的影响,并希望自动执行此操作(将用户标记为无效电子邮件)。

4

5 回答 5

6

我做了很多工作来处理退回邮件和不同类型的邮件。如果您想绝对确定您查看的电子邮件确实是特定类型的退回邮件,我强烈建议您使用一个好的过滤器。我曾与Boogie Tools合作过,而且效果很好。它可以让您知道它是什么类型的反弹,硬的、软的、瞬态的,或者是否有人试图取消订阅。它有多个 API,包括 .Net,我发现它很容易上手。

于 2008-08-11T03:38:55.647 回答
2

使用 TcpClient 很容易做到。打开服务器:

TcpClient tcpClient = new TcpClient();
tcpClient.Connect(POP3Server, POP3Port);
NetworkStream stream = tcpClient.GetStream();

阅读欢迎信息:

int read = stream.Read(inBuffer, 0, inBuffer.Length);
string response = Encoding.ASCII.GetString(inBuffer, 0, read);
if (response.IndexOf("+OK") != 0) throw new ...;

写回服务器:

byte[] outBuffer = Encoding.ASCII.GetBytes("USER " + account + "\r\n");
stream.Write(outBuffer, 0, outBuffer.Length);

发送 USER 命令。您需要登录,然后才能开始获取消息 - 请参阅 POP3 RFC以获取完整的命令列表。如果您不想自己动手,请查看这篇CodeProject 文章

于 2008-08-10T17:28:50.200 回答
2

正如abfo 所说,POP3 协议非常简单,获取消息是轻而易举的事。解析消息以获取故障更加困难,并且可靠地解析出导致失败的电子邮件以及失败的原因非常困难。问题是退回邮件没有标准格式,默认格式因 MTA 而异。然后,站点管理员可以调整故障原因,使其更难识别,并且站点管理员可以修改故障消息模板,这几乎是不可能的。

看看您是否可以找到一个 .NET 邮件列表管理器,以及是否可以重新调整退回处理代码的用途。如果做不到这一点,请查看您是否可以更改发送消息的工具,以从唯一(且可逆)的信封发件人(我认为它被称为VERP?)发送每封电子邮件。这样您就不需要扫描电子邮件的正文,您可以通过检查失败消息的收件人地址来判断哪个收件人失败了。

于 2008-08-11T02:22:13.990 回答
0

感谢您的回答,太好了!我自己做了一些研究,发现ListNanny - 使用起来也超级简单,并告诉你反弹的类型。会写一些概念证明,看看我更喜欢哪一个......

于 2008-08-11T08:43:18.963 回答
0

你的问题让我意识到我要使用的 Wordpress Newsletter 插件没有退回管理,我也需要一些东西。

我环顾了一会儿,最终选择了免费和开源的PHPlist 通讯管理器

他们详细描述了处理退回的设置,并且他们确实具有实验性的高级退回处理功能,可让您完全按照您想要的方式自定义退回处理。

Evem 如果您决定不使用 PHPlist,那么阅读他们的做法对您来说将是有用的信息。

于 2009-01-09T19:58:06.970 回答