《新潮电子》的编辑向我约稿,而我一向都是懒得写文章的,但编辑说是写关于怎样写邮件软件的,因为很多读者对开发邮件程序感兴趣。我想这倒比其他内容好写些,因为开发 foxmail 的缘故,毕竟积累了一些想法。但因为是面向大众的文章,技术性又不能太强,因此主要从概念上说说我自己的看法。
首先要确定的是你要开发的邮件软件的应用对象和范围。分为三类吧,第一类,你的目标是通用的 E-mail 软件,就像 foxmail, outlook 一样。第二类,是 E-mail 的一些分支,如邮件监测器 (POP3 Monitor,自动检测服务器上是否有邮件到来),批量邮件发送器 (bulk emailer) 等。第三类,是将 E-mail 应用到某些软件项目中,比如,你可能须要在一个 MIS 项目中用 E-mail 来传输数据,或在 Web 上提供发送邮件的功能(如贺卡)。
关于三种类型,他们的实现方法和难度是不一样的。为了讲解方便,我们将上面三种类型称为 A 类,B 类和 C 类。其中 A 类因为用户的覆盖面最广,须要考虑的因素最多,对程序的稳定性和适应性要求也最大,B 类次之。
下面的内容主要集中在邮件相关知识上。我要强调的是,一个邮件软件,更多的是非网络的处理。因为邮件软件不同于其它的网络应用,邮件软件要更贴近用户,实际上是一个日常办公应用。事实上,在 Foxmail 中,网络部分的处理可能只用了 10% 的精力。
一、了解 TCP/IP 网络编程方法
对于 A 类和部分 B 类应用,要求你自己编程实现基于 TCP 的邮件通讯。因此对 TCP/IP 编程的理解是必要的。而且一旦你掌握了 TCP/IP 的编程方法,你可以完成更多的网络程序,比如 FTP, HTTP 等。这里没法深入去讨论,因为这是一本书或几本书的内容。因此只能向你推荐我自己觉得必看的书目:
1.Internet 的经典教材:
书名:Internetworking With TCP/IP。作者:Douglas E. Comer。出版:Prentice Hall。
中译本:《用 TCP/IP 进行网际互连》。出版:电子工业出版社。
这套书共有三卷。清华大学出版社在国内发行英文版,因为价格比国外买便宜,前不久我还在广州买了一套寄给在美国念书的朋友(邮费比书还贵)。
2. 一本很好的关于 Winsock 编程的书
书名:《Internet 编程》,电子工业出版社,1996。
这是一本翻译过来的书,详细讲解了 TCP/IP 编程的概念和方法。其中对 Unix socket 和 Windows socket 编程的区别,以及 Windows 下 socket 的同步和异步,消息和多线程等概念讲解透砌。1996 年我就是因为看了这本书,萌发了写 foxmail 的想法。
二、了解电子邮件相关的标准
对 A 类和 B 类应用,有必要非常熟悉网络协议,特别是与 E-mail 相关的 RFC 协议。RFC 是 Request for Comments 的简称,Internet 的绝大部分协议都是通过 RFC 的方式提供与更新的,比如我们常用的 HTTP 协议,就是由 RFC2068 定义的。与 E-mail 相关(通讯,邮件格式,附件编码等)的协议有很多,以下是必须要看的 RFC:
RFC 821 (SMTP,简单邮件传输协议,定义了发送邮件的机制)
RFC 822 (邮件格式定义)
RFC 1725 (POP3,邮局协议版本 3,定义了从 POP3 服务器收取邮件的机制)
RFC 1521 (MIME 标准)