通过POP3自动检查退回的电子邮件?

时间:2008-08-10 16:16:15

标签: .net email pop3 bouncedemail

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

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

5 个答案:

答案 0 :(得分:5)

我已经完成了大量处理退回电子邮件和不同类型的工作。如果你想绝对确定你所看到的电子邮件确实是特定类型的反弹,我强烈建议你获得一个好的过滤器。我曾与Boogie Tools合作过,效果很好。它可以让你知道它是什么样的反弹,硬,软,瞬态或甚至有人试图取消订阅。它有一个多重API,包括.Net,我发现它很容易上班。

答案 1 :(得分:3)

作为abfo says,POP3协议非常简单,获取消息是没有道理的。解析消息以获取失败更加困难,并且可靠地解析导致失败的电子邮件以及失败的原因非常困难。问题是退回邮件没有标准格式,默认格式从MTA到MTA不等。然后故障原因可以由网站管理员调整,使其更难识别,并且网站管理员可以修改失败消息模板,这使得它几乎不可能。

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

答案 2 :(得分: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 article

答案 3 :(得分:0)

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

我环顾了一会儿,我已经确定了免费的开源PHPlist newsletter manager

他们详细描述their settings for handling bounces,他们确实有一个实验advanced bounce handling feature,可让您完全按照自己的方式自定义退回处理。

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

答案 4 :(得分:0)

谢谢你的回答,太棒了! 我自己做了一些研究,发现ListNanny - 也非常简单易用,并告诉你反弹的类型。会写一些概念证明,看看我更喜欢哪一个......