29.1.2 PHP对POP3和IMAP的支持

虽然PHP对IMAP和POP3有着不错的支持,但它都是通过IMAP函数库所提供的功能来实现的。为了使用本章所提供的代码,需要安装IMAP库。可以通过查看phpinfo()函数的输出来判断是否已经安装该库。

如果使用的是Linux或UNIX并且没有安装它,则需要下载该库。可以通过FTP从如下站点得到最新的版本:ftp://ftp.cac.washington.edu/imap/。

在UNIX平台下,你可以下载源代码并根据操作系统对其进行编译。

你必须在系统包含目录中创建一个保存IMAP文件的目录,例如imap(不要只是将这些文件复制到这个基本的包含目录中,因为这可能会导致一些冲突)。在新目录中,创建imap/lib和imap/include两个子目录。将安装中涉及的所有*.h文件复制到imap/include/目录。当完成了编译,将创建一个c-client.a文件。将其重命名为libc-client.a并且复制到imap/lib目录。

然后必须运行PHP的配置脚本,将—with-imap=dirname指令添加到所使用的任何其他参数,(这里,dirname是所创建的目录名称)并重新编译PHP。

要在Windows下使用IMAP扩展,可以打开php.ini配置文件,注释掉如下代码行:


extension=php_imap.dll


然后再重新启动Web服务器。

通过运行phpinfo()函数,可以确认IMAP扩展是否已经安装。函数输出将显示关于IMAP的内容。

需要注意的一件有趣的事情是:虽然这些函数都叫做IMAP函数,但它们同样能够支持POP3和网络新闻传输协议(Network News Transfer Protocol,NNTP)。在这个例子中,我们准备将它们用于IMAP和POP3,但Warm Mail应用程序可以很容易扩展,因此除了邮件客户端外,它还可以使用NNTP并且成为一个新闻阅读程序。

该函数库中包含一些函数,但为了实现该程序的功能,我们仅使用其中少数几个。具体使用函数时,我们会详细介绍这些函数,但是要注意有很多这样的函数。针对具体需求的不同,或者想为程序增加特别的特性,请查看相关资料。

仅使用部分的内置函数,就可以建立一个相当有用的邮件应用程序。这意味着只需要研究部分文档。在本章中,我们将使用的IMAP函数包括:

■imap_open()

■imap_close()

■imap_headers()

■imap_header()

■imap_fetchheader()

■imap_body()

■imap_delete()

■imap_expunge()

为了让用户能够读取邮件,需要获得用户邮件服务器和用户账户的详细信息。为了不必每次都从用户那里获得这些详细信息,我们将建立一个有用户名和密码的数据库以便存储这些资料。

通常,人们会有多个电子邮件账户(比如一个用于家庭,另一个用于工作),我们应该允许他们连接其中任何一个。因此,应该允许他们在数据库中有多条记录。

除了让用户能够发送新邮件外,还应该让用户能够阅读、回复、转发和删除已存在的邮件。我们可以使用IMAP或POP3完成所有的阅读功能,使用SMTP的mail()函数完成所有发送功能。

下面,让我们看看如何实现这些功能。