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

.net 通过POP3自动检查被退回的电子邮件?,.net,email,pop3,bouncedemail,.net,Email,Pop3,Bouncedemail,有人能推荐一个软件或.NET库来检查被退回的电子邮件以及被退回的原因吗?我收到的邮件被退回到一个pop3帐户,我可以阅读 我需要它来清除用户数据库中的无效电子邮件地址,并希望自动执行此操作(将用户标记为无效电子邮件)。使用TcpClient非常容易。打开服务器: TcpClient tcpClient = new TcpClient(); tcpClient.Connect(POP3Server, POP3Port); NetworkStream stream = tcpClient.GetSt

有人能推荐一个软件或.NET库来检查被退回的电子邮件以及被退回的原因吗?我收到的邮件被退回到一个pop3帐户,我可以阅读


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

使用TcpClient非常容易。打开服务器:

TcpClient tcpClient = new TcpClient();
tcpClient.Connect(POP3Server, POP3Port);
NetworkStream stream = tcpClient.GetStream();
byte[] outBuffer = Encoding.ASCII.GetBytes("USER " + account + "\r\n");
stream.Write(outBuffer, 0, outBuffer.Length);
阅读欢迎信息:

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

TcpClient tcpClient = new TcpClient();
tcpClient.Connect(POP3Server, POP3Port);
NetworkStream stream = tcpClient.GetStream();
byte[] outBuffer = Encoding.ASCII.GetBytes("USER " + account + "\r\n");
stream.Write(outBuffer, 0, outBuffer.Length);
它发送用户命令。您需要登录,然后才能开始抓取消息-有关完整的命令列表,请参阅POP3。如果您不想自己动手,请查看此信息。

因为POP3协议非常简单,获取消息非常简单。解析消息以获取失败是比较困难的,而可靠地解析出导致失败的电子邮件以及失败的原因是非常困难的。问题是,跳出邮件没有标准格式,默认格式因MTA而异。然后,站点管理员可以调整失败原因,使其更难识别,站点管理员可以修改失败消息模板,这几乎是不可能的


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

我已经做了大量处理反弹邮件的工作,并且有不同的类型。如果你想绝对确定你看到的邮件确实是某种特定类型的反弹,我强烈建议你使用一个好的过滤器。我曾经和他一起工作过,而且效果很好。它让你知道它是什么样的反弹,硬的,软的,短暂的,甚至是有人试图退订。它有一个包含.Net的多API,我发现它很容易工作

谢谢你的回答,太好了!
我自己做了一些研究,发现——使用起来也非常简单,可以告诉你反弹的类型。我会写一些概念证明,看看我更喜欢哪一个…

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

我环顾了一下四周,我已经选择了免费的开源软件

他们详细地描述了,他们确实有一个实验,可以让你完全按照你想要的方式定制反弹处理


如果您决定不使用PHPlist,请阅读他们是如何使用它的,这对您来说将是非常有用的信息。

我发现Github上的这个工具工作得非常好,它的重量很轻,而且很好