jungleford如是说
近来在完善一个简单的邮件客户端程序,还好SUN J2EE SDK提供了JavaMail API,我们可以方便地调用它已经封装好的接口而不用理会协议本身的实现。但现在很多mail服务器都提供的是POP协议接收邮件,由于POP3是“无状态”的协议,服务器端不保存诸如标记这样的任何状态,你把一封邮件移到“垃圾箱”里在服务器端看来和其它邮件并没有什么区别,所以所有邮件状态的解析工作全部留给客户端处理,这就是为什么利用JavaMail编写接收邮件的程序要比编写发送邮件的程序要困难不少的原因。尽管JavaMail封装得相当不错,但写一个好的邮件客户端仍需要对基本协议有一定的了解,初次接触JavaMail的朋友可能会有一些困惑,譬如:为什么Message对象不是可序列化的对象,否则我的客户端解析起来可能方便得多;为什么对中文内容的邮件支持得不好,我应当如何实现自己的中文邮件处理方案;……这些问题的答案可以在SUN官方网站上提供的JavaMail API FAQ找到,它会对你的疑问有一个初步的解释,还有它的中文译文转自SUN中国网站。不过清晰的概念还是了解协议和RFC比较好,比如RFC 822等。