从.Net Framework 2.0开始,MS增加了System.Net.Mail名字空间实现对Email的支持,但是却只支持发邮件的smtp协议,并不支持常用的收邮件的pop3等协议。前段时间打算写一个简单点的pop3邮件客户端,便简单的看了下pop3协议相关内容。
Pop3协议本身并不复杂,在RFC 1939 - Post Office Protocol - Version 3中有详细的说明,这个RFC比较短,常用的命令也就十来个,文章POP3 Commands中也有一些简单的示例,这里就不多介绍了。
虽然实现pop3协议并不复杂,但如果要实现一个pop3邮件客户端却并不是一个很容易的事情。主要是因为其邮件内容是采用MIME格式编码的,要实现一个功能完整的MIME解析器还是要费很大一番功夫的。
好在网上已经有不少优秀的开源.net pop3协议的解析器,常见的有OpenPop.NET;另外,CodeProject上的一篇文章.NET POP3 MIME Client也相当不错,这里也推荐下(CodeProject上相关的文章还不少,感兴趣的可以看下)。这几个开源库本身质量都非常高。但由于其开发时间较早,并没有提供C# 5.0中支持await的异步api,如果要异步访问,稍稍有点不便(不过pop3协议多用于客户端,通过多线程的方式实现并发也无大碍)。如果有空的话,考虑写个功能完善的,支持await的pop3 client。