一段时间用下来,平安无事。有一次客户又提出相同的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方式输出调试信息
没有评论:
发表评论