CactiEZ邮件报警的中文乱码问题解决

1 、查看Settings邮件报警插件的include\mailer.php中默认编码设置为UTF-8
$this->Config["Mail"]["CharSet"] = "UTF-8";

2
、修改thold_functions.php,找到以下位置
$message = str_replace('<SUBJECT>', $subject, $message);
在这行下添加以下代码
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
保证UTF-8邮件标题不乱码。

3 、修改polling.php,位置/var/www/html/plugins/thold/includes/polling.php
宕机恢复通知模板$msg = $subject; 在这两行下分别添加代码
$msg = iconv("UTF-8", "GB2312//IGNORE", $msg);
宕机报警模板$msg =...
$msg = iconv("UTF-8", "GB2312//IGNORE", $msg);
//
上边这句代码代表把邮件正文编码由UTF-8转换为GB2312ignore的意思是忽略转换时的错误,如果没有ignore参数,iconv在转换个别字符如"―"gb2312时会出错,然后停止转换后边的字符。
以上功能也可使用mb_convert_encoding代替,由于PHP5WINDOWS版本中已经默认集成开启了iconv功能,所以更为简单高效一些。如果使用mb_convert_encoding转换编码需要修改php.ini开启php_mbstring扩展。;extension=php_mbstring.dll去掉注释符“;”,需要重启Apache
$msg = mb_convert_encoding($msg, "GB2312", "UTF-8");
//
代表UTF-8 To GB2312其实php_mbstringmb_convert_encoding非常强大,它可以自动识别文件的编码,可以设置源编码格式为多种编码,根据设定的顺序进行转换,如果设定的源编码和目的编码一样则不改变字符串的编码格式。此处的用途比较单一所以采用小巧的iconv

4 CactiEZ 设置 (Mail / DNS) --- From Name 乱码:
文件位置: /thold_functions.php
if ($from == '') {
              $from = read_config_option('thold_from_email');
              $fromname = read_config_option('thold_from_name');
                $fromname = iconv("UTF-8", "GB2312//IGNORE", $fromname); 需要添加代码。

你可能感兴趣的:(职场,cacti,休闲,thold)