收藏到: Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网 QQ书签 更多 Bookmark and Share

2009年4月22日星期三

BugFree 2.0.2 指派人员支持多个邮件发送

测试小组,每人负责某几个产品,开发人员要知道什么产品谁负责也是比较讨厌的。一个开发人员同时参与几个产品的开发(不同产品有不同的人员负责测试),而且开发人员更换的有时也比较快,又要重新培训也比较麻烦。因此一开始规定,将所有的测试人员邮件编辑成一个小组,开发人员版本提交的时候,发送到这个测试小组。测试人员收到邮件,如果是自己负责测试的产品就进行测试。


一段时间用下来,平安无事。有一次客户又提出相同的bug,这个问题早已经解决过了,怎么客户还提这个问题。一路检查下来,发现公司的邮件不正常。

原来开发人员发送邮件,发送给测试小组,测试小组相关人员收到邮件后会进行处理。但是现在负责该产品的测试人员没有收到这个邮件,造成了整个环节上的脱钩,无法联系起来。因此发送邮件通知版本发布还是有问题。现在内部的bug测试使用的是bugFree2.0.2,因此想使用bugfree进行版本提交,这样即使有邮件丢失,测试人员也可以通过检查bugfree工作记录重新拾起来。

原本考虑使用bugfree发送邮件,发送到一个邮箱,测试人员都通过IMAP方式接收这个邮箱的邮件,但是公司内部使用的邮件服务器不支持IMAP服务(shit),只能通过修改BugFree来进行了。

BugFree用的是Php开发的,从未接触过PHP,不过这些脚本式的语言应该可以依样画葫芦来进行处理。
需要修改的地方有:
1. 增加用户,可以输入多个邮件地址
2.修改用户: 可以输入多个邮件地址
3.可以往多个地址发送邮件

看了一下Bugfree的源码,发现一个比较有趣的地方(觉得有趣,估计bugfree的一些功能根本没有使用到):
1. 增加用户,检查邮件使用的是函数:sysCheckEmailFormat
2.修改用户:发现直接在修改用户的函数中设置了正则表达式进行验证:xAdminEditUser
3.发送邮件:在sysMail函数中,支持用逗号分割多个邮件地址。

既然找出来的这几个地方,就依样画葫芦进行修改(谁叫自己不懂PHP)
找到:sysCheckEmailFormat,将原来直接验证邮件的地方进行修改:
  原来: if(!eregi("^[ ......." , $EmailStr)
  修改成: $EmailList = explode(',', $EmailStr);
                   foreach($EmailList as $Singlemail)
                   {
                       if(!eregi("^[ ......." , $Singlemail) ....
                   }
      
修改用户信息的地方,将直接判断邮件的地方改成用sysCheckEmailFormat进行验证就可以了。

发送邮件的地方看了一下,在接收者的地方没有问题,Bugfree通过逗号进行了分割。但是抄送的地方没有进行判断,在CC的地方按照一样的方式,对每个人的邮件按照逗号进行分割,重新获取邮件地址。

----------------------------------------------------
学习到的知识:
1. PHP中的explode:将字符串变成数组,按照指定的字符进行分割
2. 函数array_diff/array_unique,数组的方法,进行数据判别
3. PHP的输出:在调试过程中,发生错误,但是不知道如何调试,找到的资料:
    通过syslog(LOG_NOTICE, 输出的内容)
    可以在/var/log/message中输出调试信息
4.jsAlert:直接在页面上显示信息出来,没有仔细看这是Bugfree自己写的方法还是php的方法


-----------------------------------
调试过程中,遇到的问题:
1. 原来以为通过分号分割用户的邮件地址,就可以向多个地方进行发送(类似于outlook等发送给多人的方式,实际使用下来不行,后来看到sysMail中用逗号分割,全部改成了逗号)
2. 获取调试信息:
    修改了代码,但是结果不对,无法看到调试信息,上网找了一些资料,自己当前情况最方便的就是用syslog方式输出调试信息

没有评论:

发表评论