文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>解决PHPMailer邮件标题中文乱码

解决PHPMailer邮件标题中文乱码

时间:2009-03-26  来源:renxiao2003

PHPMailer是PHP语言的优秀的邮件发送包。支持 SMTP,CC,BCC,Sendmail 等多种发送方式。


下面是一个基于 PHPMailer 的发送函数,旧代码了:


function smtp_main_send( $to, $subject, $message, $from, $fromName )

{

        $mail = new PHPMailer();

        $mail->CharSet = "UTF-8"; // 设置编码

        $mail->IsSMTP(); // 设置使用SMTP服务发送

        $mail->Host = "smtp.mail.com";

        $mail->Username = "user";

        $mail->Password = "pass";

        $mail->SMTPAuth = true;

        $mail->From = $from;

        $mail->FromName = $fromName;

        if ( is_array( $to ) ) {

                foreach ( $to as $address ) {

                        $mail->AddAddress( $address );

                }

        } else {

                $mail->AddAddress( $to );

        }

        $mail->Subject = $subject;

        $mail->Body = $message;

        $mail->AltBody = $message;

        $mail->IsHTML( true );

        return $mail->Send();

}


直接这样发送邮件,英文没有问题,但在发送中文的时候标题会有乱码。需要对 class.phpmailer.php 做一些修改:


修改1,1137 行:


function EncodeHeader ($str, $position = 'text') {


将函数增加一个参数:


function EncodeHeader ($str, $position = 'text', $pl = 0) {

        if ( $pl ) return "=?" . $this->CharSet . "?B?" . base64_encode($str) . "?=";


修改2,796 行:


$result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject)));


将调用改为:


$result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject),'text', 1));

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载