站点建立了相当数量的订阅客户群之后,可以通过给他们发送新闻信件保持联系。在本章中,我们将实现一个邮件列表管理器(MLM)的前台程序。有些MLM允许每个订阅者给其他订阅者发送消息。我们在本章所创建的程序将是一个新闻信件系统,在这个系统中,只有列表管理员才能发送消息。我们把这个系统叫做金字塔式MLM。
这个系统与市场上其他已有系统相似。如果想了解系统的目标,可以访问如下站点:http://www.topica.com。
我们的程序允许管理员创建多个邮件列表,而且可以单独将新闻信件发送给每一个列表。该程序使用文件上载让管理员可以上载脱机创建的文本或HTML格式的新闻信件。这就意味着管理员可以使用任何自己喜欢的软件来创建新闻信件。
用户可以订阅站点上的任何一个列表,并且选择以文本形式还是HTML格式接收新闻信件。
在本章中,我们将主要介绍以下内容:
■多个文件的文件上载
■Mime编码的电子邮件附件
■HTML格式的电子邮件
■不需要人工交互的用户密码管理方法
30.1 解决方案的组成
我们希望建立一个在线新闻信件创作与发送系统。这个系统应该允许创作各种各样的新闻信件发送给用户,并且允许用户订阅这些新闻信件中的一种或多种。
特别地,该解决方案将满足如下所示的目标。
■管理员应该能够建立和修改邮件列表。
■管理员应该能够将文本或HTML格式的新闻信件发送给一个列表中的所有订阅者。
■用户应该能够通过注册使用一个站点,并且可以进入并修改他们的个人资料。
■用户应该能够订阅该站点的任意一个列表的新闻信件。
■用户应该能够取消一个邮件列表的订阅。
■用户应该能够据个人喜好以HTML格式或纯文本格式存储新闻信件。
■出于安全的原因,用户应该不能将邮件发送到列表,或者不能看见其他用户的邮件地址。
■用户和管理员应该能够查看有关邮件列表的信息。
■用户和管理员应该能够查看过去已经发送给某个列表(存档文件)上的新闻信件。
到这里,我们已经对项目有了基本了解,就可以开始设计解决方案及其组成部分,例如,建立一个列表、订阅者和存档新闻信件的数据库,上载脱机创建的新闻信件;以及发送带附件的邮件。
30.1.1 建立列表和订阅者数据库
在这个项目中,我们除了记录系统用户订阅的列表外,还要记录用户的用户名和密码。当然,也要记录每个用户的个人选项:接收文本格式还是HTML格式的邮件,从而能够以适当的格式向用户发送新闻信件。
管理员是一个特殊的用户,他拥有创建新邮件列表和将新闻信件发送给该列表用户的权限。
对过去的新闻信件进行存档也是该系统一个很好的功能。订阅者可能没有保存以前的新闻信件,但是订阅者可能想要查找其中的某些东西。存档文件还可以作为新闻信件的一种市场推广工具,因为订阅者可以看到以前的新闻信件的主要内容。
在MySQL中建立该数据库,并且在PHP中创建访问MySQL的界面是非常简单的,没有什么新内容,也没有什么困难。