|
2#
楼主 |
发表于 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 编辑 ] |
|