写了两周多的PHP邮件一对一群发系统

2010年3月13日 由 CodeCoolie 留言 »

由于我的控件给客户升级的时候是发送邮件,最开始时候是手工使用BCC暗送模式群发,结果有一次疏忽,把邮件列表粘贴到To里面了,结果那组客户互相都知道了邮件地址,很是抱歉。好在客户比较少,影响不大,大家也比较不错,也没追究我责任啥的:-)

刚开始只一个Converter控件,还好说,后来多了Player控件,然后二者组合,加上二进制版、源码版,以及国内和海外需要分开发送,3 * 2 * 2 = 12 组!

手工发送麻烦不说,费时费力还容易出错,所以找了个一对一群发软件,即GroupMail来发升级,感觉还可以,但有两个小问题:1、是要发12组,要创建12个邮件,也挺麻烦的;2、由于二进制控件包比较大(最大的一个组合有2.2M),所以在本机上发送也比较慢。

于是于是乎,我大概三周前,开始着手尝试自己写一个Web方式的邮件一对一群发系统。自己写的原因也有二:1、是网上看了几个Mailing系统,都比较庞杂,不喜欢,个人风格喜欢简约的;2、程序员的毛病,代码苦力的命,喜欢自己写代码玩。

对PHP还算比较熟,从刚开始接触PHP算起,也有10个年头了。而且机缘巧合,两年多前刚开始共享没收入时候,接了两次对日外包的活,用的是 CakePHP,一个源自RoR的PHP框架,感觉这个框架还不错,配合MySQL使用相当方便,只是CakePHP框架比较大,运行起来比较慢,当然,很小的访问量肯定是没问题的。而发送邮件采用了PHPMailer类库,支持多种发送方式,包括SMTP,并且支持TLS安全链接,可以使用Gmail账户发送邮件。

但我着手开始写的时候,定位就是自用,所以索性没使用MySQL来做数据存储,而是自己建立了一个文件级的数据接口,采用INI格式,这样也方便手工修改数据。但自己写数据存储接口,增加了一些工作量,加上自己比较追求简洁,虽然代码量不大,但反复修改完善,也花了不少时间,怎么也有两周多吧。其中独立函数约300行,Model不到2000行,Controller约2200行,View算代码行就更没意义了,大约600行吧。

PHP这种脚本类的语言,写起来比较容易,加上使用CakePHP框架,就更加简单了,按照MVC的模式,也利于思考,只是PHP一段时间不用,API都忘光,好多都是用到时候Google之,CakePHP以前使用也没深入了解,代码达到预期效果,就“妥了”,这次一边写代码,一边查看CakePHP在线手册,或者直接看框架源码,多少比以前能多利于了一些框架提供的便利处,但貌似也只是仅仅利用了一少部分而已,感觉CakePHP还有很多的封装好的便利性没用到。

现在系统还很简陋,比如不支持HTML格式邮件,不支持Ajax方式,虽然这些都不难实现,但逻辑层面已经完善,并且目前来说PHP或说CakePHP也不是主业,还是不要过多耗费时间为好。

目前系统基本可以正常工作,并且满足了自己的初始需求,即:1、方便性,Web方式比GUI桌面方式灵活,无需多言;2、快速性,因为系统运行在网络主机上,发邮件时候直接使用主机自己的邮件服务,所以不存在网络传输瓶颈,发邮件的过程几乎不需要时间。目前系统工作方式是刷新一次页面,发送一封邮件,可以手动刷新,也可以自动刷新。如果是刷新一次页面,发送多封邮件,那就更快了。

下面贴张本系统“处女发”的截图

广告位

2 条评论

  1. CodeCoolie说道:

    我也用的PHPMailer,只是纯文本目前可以满足我的需求,就没弄HTML。

  2. 夜知说道:

    不错,此物我也有一个,比你的好点,支持HTML,支持MySQL。
    用的PHPMailer类,你可以试一下

发表回复