当今,越来越多的站点希望为用户提供一个基于Web的电子邮件系统。本章将介绍如何使用PHP IMAP库为一个已有的邮件服务器实现Web界面。可以用它通过Web页面来检查自己已有的邮箱,或者将它扩展,使其像基于Web的大规模电子邮件系统一样支持多用户,例如,Gmail、Yahoo!Mail和Hotmail。
在这个项目中,我们将建立一个电子邮件客户端,Warm Mail,它允许用户:
■连接到POP3或IMAP邮件服务器上的账户
■阅读邮件
■发送邮件
■回复邮件消息
■转发邮件消息
■从用户账户中删除邮件
29.1 解决方案的组成
为了使用户可以阅读邮件,需要找到一种方法连接到邮件服务器。通常,这种机制与连接Web服务器的机制不同。我们需要一种方法来与用户的邮箱进行交互,检查收到的邮件消息,并单独处理每一条消息。
29.1.1 电子邮件协议:POP3和IMAP
邮件服务器需要支持两个主要的协议:POP3和IMAP。通过这两个协议,用户能够查看邮箱。如果可能,我们应该同时支持二者。POP3表示邮局协议(Post Office Protocol,POP)第三版,IMAP表示互联网消息访问协议(Internet Message Access Protocol,IMAP)。
二者主要的不同是:POP3(也是较为常见的情况)是为了那些仅从服务器下载或删除邮件而短时间连接网络的人所设计的。而IMAP出于在线使用的目的,它可以使用户与邮件进行交互,而且邮件也可以永久保存在远程服务器上。在这里,我们将不会使用IMAP的一些更高级的特性。
如果对这两个协议之间的差别感兴趣,可以参考RFC标准(RFC 1939版本3和RFC 3501 IMAP版本4修改稿1)。可以在如下站点找到关于二者相比较的优秀文章:
http://www.imap.org/papers/imap.vs.pop.brief.html.
这两个协议都不是为发送邮件设计的,因此,我们必须使用简单电子邮件传输协议(Simple Mail Transfer Protocol,SMTP)来发送邮件,在本书的前面内容中,当我们介绍如何在PHP中使用mail函数时,我们介绍了这个协议。该协议在RFC 821中进行了描述。