技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> PHP --> 解决PHPMailer邮件标题中文乱码

解决PHPMailer邮件标题中文乱码

浏览:2505次  出处信息

    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));

建议继续学习:

  1. windows下压缩包在linux解压乱码的解决办法    (阅读:4025)
  2. Linux screen窗口中文乱码问题    (阅读:3807)
  3. 一款不错的php邮件发送程序    (阅读:3546)
  4. linux下vim的编译以及终端乱码的最终解决方案    (阅读:3403)
  5. java中文乱码解决之道(六)—–javaWeb中的编码解码    (阅读:2914)
  6. 批量替换<img>标签为PHPmailer显示格式    (阅读:2545)
  7. PHP截取汉字出现乱码的解决方法    (阅读:2481)
  8. 如何在PHP下载文件名中解决乱码    (阅读:2469)
  9. 让phpmailer支持中文名称的附件和邮件标题中文乱码    (阅读:2433)
  10. Smarty截取中文乱码的解决办法    (阅读:2386)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1