BUGZILLA 设置问题
上一篇 /
下一篇 2007-08-25 15:32:10
/ 个人分类:测试工具
本人在WIN 2000安装 Bugzilla_2.18.3 ,没有设置邮件服务器,所以在每次新建BUG的时候总是提示没有配置邮件服务器:
undef error - Can't use string ("") as a HASH ref while "strict refs" in use at Bugzilla/BugMail.pm line 118.
应该修改什么地方,才能在不使用邮件服务器的同时新增BUG不提示
让bugzilla(2.20.1版本)使用第三方SMTP发邮件
前两天安装了最新的Bugzilla2.20.1,自身已经支持使用SMTP发送邮件,不再死靠着sendmail了,但是只支持非授权方式的SMTP,:(
参考2.18 版本的方法,终于搞定了2.20版本的授权方式的SMTP发送。
具体做法:
1.安装好bugzilla(具体如何安装,见其他相关文档)
2.修改$Bugzilla_DIR/defparams.pl,在@param_list中加入:
{
name => 'mailserver',
desc => 'Mail-Server',
type => 't',
default => 'mx.hit.edu.cn'
},
{
name => 'mailuser',
desc => 'Mail-User',
type => 't',
default => 'hdpan@hit.edu.cn'
},
{
name => 'mailpass',
desc => 'Mail-Pass',
type => 't',
default => 'xxxxxx'
},
注:修改后,删除$Bugzilla_DIR/data/下面的东西,重新运行$Bugzilla_DIR/checksetup.pl ,参数才可以生效。
3.修改$Bugzilla_DIR/Bugzilla/BugMail.pm,增加新的方法:
需要在文件头部加入引用:
sub MessageToMTA_NEW ($;$)
{
my ($msg,$rcpt_to) = @_;
use Net::SMTP;
my $smtp_server = Param("mailserver");
my $smtp_user = Param("mailuser");
my $smtp_pass = Param("mailpass");
my $encode_smtpuser = trim(encode_base64($smtp_user));
my $encode_smtppass = trim(encode_base64($smtp_pass));
my $smtp = Net::SMTP->new($smtp_server,Timeout => 60) ||
die 'Cannot connect to smtp server';
my $result = $smtp->command('AUTH','LOGIN');
my $answer = $smtp->getline();
# 334 VXNlcm5hbWU6
$result = $smtp->command($encode_smtpuser);
$answer = $smtp->getline();
# 334 UGFzc3dvcmQ6
$result = $smtp->command($encode_smtppass);
$answer = $smtp->getline();
# 235 Authentication successful
# or 535 Authentication failed
if ($answer =~ /535/i)
{print "Soryy,Authentication failed!n";exit;}
$smtp->mail($smtp_user);
$smtp->to($rcpt_to);
$smtp->data();
$smtp->datasend($msg);
$smtp->dataend();
$smtp->quit;
}
4.修改$Bugzilla_DIR/Bugzilla/BugMail.pm,使用新方法发邮件:
#MessageToMTA($msg);
MessageToMTA_NEW($msg, $user->email);
5.OVER。
Update:
对$encode_smtpuser和$encode_smtppass增加了trim操作,发现encode_base64()有时候会在字符串结尾加了个空格。-- 2006-04-28 11:30
Update:对这个错误:undef error - Goto undefined subroutine &main::encode_base64 at Bugzilla/BugMail.pm line ...
改正办法是:将use MIME::Base64;放到后面定义,例如:
use strict;
package Bugzilla::BugMail;
use base qw(Exporter);
@Bugzilla::BugMail::EXPORT = qw(
PerformSubsts
);
use Bugzilla::Constants;
use Bugzilla::Config qw(:DEFAULT $datadir);
use Bugzilla::Util;
use Bugzilla::User;
use Mail::Mailer;
use Mail::Header;
use MIME::Base64;
为什么我配置了以后,注册用户和修改密码可以收到信,但是新建bug就发不了信了,报Soryy,Authentication failed!n。老大帮帮
收藏
举报
TAG: