2008-08-10 87 views
10

任何人都可以推荐软件或.NET库,检查反弹的电子邮件和弹跳的原因?然后我将弹出的电子邮件转换成我可以阅读的pop3帐户。通过POP3自动检查退回的电子邮件?

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

回答

5

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

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); 

发送该用户命令。您需要登录,然后才能开始抓取邮件 - 请参阅POP3 RFC以获取完整的命令列表。如果你不打算自己查看这个CodeProject article

3

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

看看您是否可以找到.NET邮件列表管理器,以及是否可以重新设计反弹处理代码。否则,请查看是否可以更改发送邮件的工具,以便通过独特的(可逆的)封包发件人发送每封电子邮件(VERP,我认为它被称为?)。这样,您不需要扫描电子邮件的正文,就可以通过检查失败消息的收件人地址来确定哪个收件人失败。

0

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

0

你的问题让我意识到,我将要使用的WordPress通讯插件,没有反弹管理,我也需要一些东西。

我环顾了一会儿,我已经在自由和开源PHPlist newsletter manager上解决了。

他们详细描述their settings for handling bounces,他们确实有一个实验advanced bounce handling feature,这将允许您自定义反弹处理完全按照你想要的方式。

Evem如果你决定不使用PHPlist,阅读他们如何做它将是有用的信息给你。