maxHren 发表于 2006-7-18 15:20:18

不得已发之。。。关于bugzilla的CGI Error问题

我的执行步骤:
一、安装Mysql ;二、安装Perl ;三、使用BugzillaModules-2.20.zip并运行setup.bat ;四、解压bugzilla-2.20.2.tar.gz ;五、cmd程序下perl checksetup.pl(检测结果为全部OK,并且输入正确的SMTP一直到结束,都没有出错) ;六、IIS的配置(打开CGI和ISAPI服务等都完成了)
PS:上面有些步骤就略节了,如在config文件里添加密码等。

结果:页面显示:
CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers.
(只有上面这些内容,没有更多的提示了)

备注:之前我也安装过一个bugzilla-2.19.3,显示是正常的,然后我又安装了一个新的bugzilla版本bugzilla-2.20.2,没想原先显示正常的2.19.3也显示不正常

我自己分析是不是因为BugzillaModules-2.20.zip包的问题?因为装2.19.3是我手动安装的,并且装2.20时没有动过2.19.3的配置,最大的可能性就是perl我又安装过了一次

我想这里有N多的这方面的专家,对于这些异常问题有很客观的判断,急求帮助

网上我也找询答案,但都不得其果。。~~哭

[ 本帖最后由 maxHren 于 2006-7-18 16:07 编辑 ]

maxHren 发表于 2006-7-18 16:05:32

还有一个问题,安装2.20后,关于邮件的发送,是否仅仅对BugMail.pm代码进行修改就行了?

达人们看一下,下面代码能否实现邮件发送?


在文件开头需要加入:(use Net::SMTP;) 表示应用Net::SMTP来发送邮件。
在bugmail.pm里面找到如下代码:

标注#old都是需要注释掉,然后加上新代码。$msg包含了所要发送的内容

sub MessageToMTA ($) {
    my ($msg, , $rcpt_to) = (@_);
    return if (Param('mail_delivery_method') eq "none");

    my @args;
    if (Param("mail_delivery_method") eq "sendmail" && !Param("sendmailnow")) {
      push @args, "-ODeliveryMode=deferred";
    }
    if (Param("mail_delivery_method") eq "smtp") {
      push @args, Server => Param("smtpserver");
    }
#old    my $mailer = new Mail::Mailer Param("mail_delivery_method"), @args;
#old    if (Param("mail_delivery_method") eq "testfile") {
#old      $Mail::Mailer::testfile::config{outfile} = "$datadir/mailer.testfile";
#old    }
#old   
    $msg =~ /(.*?)\n\n(.*)/ms;
    my @header_lines = split(/\n/, $1);
    my $body = $2;
#old
    my $headers = new Mail::Header \@header_lines, Modify => 0;
#old    $mailer->open($headers->header_hashref);
#old    print $mailer $body;
#old    $mailer->close;

        my $sendtos = $headers->header_hashref->{To};
        my $sendto;
       
        if (ref($sendtos)){
                $sendto = join(";", @$sendtos);
        }else{
                $sendto = $sendtos;
        }
       
        my $smtp = new Net::SMTP('mail.XXX.com'); # 这里换成你自己使用的邮件服务器地址
        $smtp->auth('bugzilla', 'Quf6kd.k83l*e') or die "auth error\n"; # 这里换成你自己使用的邮件服务器上的用户名和密码
        $smtp->mail('bugzilla@XXX.com'); # 这里换成你自己使用的邮件地址
        $smtp->to($sendto); #这里是接收地址
        $smtp->data();
        $smtp->datasend($msg);
        $smtp->dataend();
        $smtp->quit;

}

[ 本帖最后由 maxHren 于 2006-7-18 16:06 编辑 ]

hugdod 发表于 2009-11-8 19:53:58

。。。无奈没有头绪
页: [1]
查看完整版本: 不得已发之。。。关于bugzilla的CGI Error问题