bugzilla使用第三方SMTP发邮件及乱码问题解决
来源:互联网 发布:生日提醒软件农历 编辑:程序博客网 时间:2024/05/21 17:24
Bugzilla2.22下发邮件,不必要安装什么特殊的sendmail.exe软件之类,只需要修改Bugzilla/BugMail.pm文件
1.在文件头部(不是文件的最上部)加入对Base64包引用:
use MIME::Base64;
2.修改MessageToMTA方法如下:
sub MessageToMTA {
my ($msg) = (@_);
return if (Param('mail_delivery_method') eq "none");
my ($header, $body) = $msg =~ /(.*?/n)/n(.*)/s ? ($1, $2) : ('', $msg);
my $headers;
if (Param('utf8') and (!is_7bit_clean($header) or !is_7bit_clean($body))) {
($headers, $body) = encode_message($msg);
} else {
my @header_lines = split(//n/, $header);
$headers = new Mail::Header /@header_lines, Modify => 0;
}
my @header;
push @header, 'Content-Type: text/plain; charset="gb2312"'. "/n";
my @new_msg;
{
use Encode;
no strict 'refs';
push @new_msg, encode("euc-cn",decode("utf8",$msg));
}
my $from = trim($headers->get('from'));
my $rcpt_to = trim($headers->get('to'));
use Net::SMTP;
my $smtp_server = 'mail.cvtt.cn';
my $smtp_user = 'panglei@cvtt.cn';
my $smtp_pass = 'passwd';
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 "Sorry,Authentication failed!n";exit;}
$smtp->mail($smtp_user);
$smtp->to($rcpt_to);
$smtp->data();
$smtp->datasend($msg);
$smtp->dataend();
$smtp->quit;
}
3.对于Bugzilla发送中文邮件乱码问题的解决:
(1)将/Bugzilla/CGI.pm中
# Send appropriate charset
$self->charset(Param('utf8') ? 'UTF-8' : '');
改为:$self->charset('UTF-8');
(2)在/Bugzilla/BugMail.pm第586行加上两行:
use Encode;
$substs{"summary"} = encode('MIME-Q', $substs{"summary"});
(3)打开Bugzilla的网页,进入Bugzilla的系统设置(Parameters),在Email项的
newchangedmail 中本框文字的第一行加上Content-type: text/plain; charset=UTF-8
设置之后如果邮件标题中还是乱码, 就打开系统设置(Parameters), 找到Email项的 newchangedmail:一项,将该项下文本框里面的 Subject: [Bug %bugid%] %summary% 改为 Subject: %neworchanged% [Bug %bugid%] 吧,总之避开 %summary% 这个变量里面的汉字
- bugzilla使用第三方SMTP发邮件及乱码问题解决
- 让bugzilla使用第三方SMTP发邮件
- linux使用mail命令发邮件—第三方smtp
- bugzilla使用SMTP发送邮件
- 在Bugzilla中通过SMTP发通知邮件
- 在Bugzilla中通过SMTP发通知邮件
- flex使用smtp协议发邮件
- 使用python smtp发邮件代码
- perl 使用Net::SMTP 发邮件
- 使用telnet登陆smtp服务发邮件
- Python 使用SMTP 实现发邮件功能
- 使用telnet登录smtp服务发邮件
- 使用telnet登陆smtp服务发邮件
- 利用第三方类 phpmailer 发邮件
- 在sps中使用第三方smtp软件解决邮件服务器不允许匿名访问的问题
- Python 使用第三方 SMTP 服务发送邮件(qq邮箱)
- python3第三方使用smtp发送邮件附带xlsx文件【已解决中文名报错】
- smtp发邮件
- 学习gnome-panel源码,了解linux gtk编程
- AR invoices transferred to GL successfully but can't be found in GL module
- 一个朋友的
- POPHint 弹出提示框
- 空间开通!
- bugzilla使用第三方SMTP发邮件及乱码问题解决
- DB2 修改表结构过程
- 撰写863以及各种基金类技术文档的一些心得体会
- Unix man 手册(学习笔记)
- 人月神话的破灭
- 調用NetMeeting
- 代理服务器 Proxy Server
- 回发或回调参数无效
- urlscan使用详解