通过POP3自动检查退回的电子邮件吗?
任何人都可以推荐用于检查退回电子邮件和退回原因的软件或者.NET库吗?我将退回的电子邮件发送到pop3帐户中,然后可以阅读。
我需要它来使我的用户数据库免受无效电子邮件地址的侵扰,并希望使其自动化(将用户标记为无效电子邮件)。
解决方案
回答
使用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文章。
回答
正如abfo所说,POP3协议非常简单,获取消息毫无疑问。解析消息以获取失败更加困难,并且可靠地解析出导致失败的电子邮件以及失败的原因确实很困难。问题是退回邮件没有标准格式,默认格式随MTA的不同而不同。然后,站点管理员可以调整失败原因,使其更难以识别,并且站点管理员可以修改失败消息模板,从而使其几乎无法恢复。
查看是否可以找到.NET邮件列表管理器,以及是否可以重新使用退回处理代码。失败了,看看是否可以更改发送消息的工具,以从唯一(且可逆)信封发送器(VERP,我认为这是发送邮件)发送每封电子邮件。这样,我们无需扫描电子邮件的正文,就可以通过检查失败消息的收件人地址来确定哪个收件人失败了。
回答
我已经做了很多工作,处理退回电子邮件,并且有不同的类型。如果我们要绝对确定所查看的电子邮件确实是特定种类的退回邮件,我强烈建议我们选择一个好的过滤器。我曾与Boogie Tools一起工作过,而且效果很好。它可以让我们知道它是哪种反弹,硬,软,瞬态,或者甚至有人试图退订。它具有包括.Net在内的多种API,我发现它很容易上手。
回答
谢谢回答,太好了!
我自己做了一些研究,发现ListNanny也超级简单易用,并告诉我们反弹的类型。将写一些概念证明,看看我更喜欢哪一个...
回答
问题使我意识到我将要使用的Wordpress Newsletter插件没有反弹管理,因此我也需要一些东西。
我环顾了片刻,并选择了免费的开源PHPlist新闻通讯管理器。
他们详细介绍了处理跳动的设置,并且确实具有实验性的高级跳动处理功能,可让我们以所需的方式完全自定义跳动处理。
Evem如果我们决定不使用PHPlist,请阅读它们的用法,这对我们来说是有用的信息。