本人用phpmailer 类库想发一封电子邮件,编码已经设置成了utf-8,但如果发件人,收件人,及主题中包含中文字符,则显示乱码问题,很是不爽。从网上找了一些方法,他们是修改 class.phpmailer.php 文件。由于我不想修改它,想求高人指点。。谢谢了先。

解决方案 »

  1.   

    $mail->CharSet = 'UTF-8';($mail是PHPMailer对象),有没加着句
      

  2.   

    加了啊这句,body里面的汉字变过来了,但是收件人,主题等如果含有中文就会显示乱码,不知是不是个bug。
      

  3.   

    汗了,怎么phpmailer报一堆错啊:[User:root Time:20:22:07 Path:/home/liangdong/php]$ php mailer.php 
    PHP Notice:  Undefined variable: Encoding in /usr/local/lib/php/phpmailer.inc.php on line 270Notice: Undefined variable: Encoding in /usr/local/lib/php/phpmailer.inc.php on line 270
    PHP Fatal error:  Cannot access empty property in /usr/local/lib/php/phpmailer.inc.php on line 270Fatal error: Cannot access empty property in /usr/local/lib/php/phpmailer.inc.php on line 270
      

  4.   

    我试验了一下,成功了,代码网上直接摘过来填了填,标题及内容都不乱码。楼主的php文件是windows的还是linux的? 注意php文件自身编码与mailer设置的编码一致,我下的最新的phpmailer,163发往QQ,成功。<?php
    function postmail_jiucool_com($to,$subject = "",$body = ""){
      //Author:Jiucool WebSite: http://www.jiucool.com  
      //$to 表示收件人地址 $subject 表示邮件标题 $body表示邮件正文
      //error_reporting(E_ALL);
      error_reporting(E_STRICT);
      date_default_timezone_set("Asia/Shanghai");//设定时区东八区
      require_once('class.phpmailer.php');
      include("class.smtp.php");  
      $mail = new PHPMailer(); //new一个PHPMailer对象出来
      $body = eregi_replace("[\]",'',$body); //对邮件内容进行必要的过滤
      $mail->CharSet ="UTF-8";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
      $mail->IsSMTP(); // 设定使用SMTP服务
      $mail->SMTPDebug = 1; // 启用SMTP调试功能
      // 1 = errors and messages
      // 2 = messages only
      $mail->SMTPAuth = true; // 启用 SMTP 验证功能
      $mail->Host = "smtp.163.com"; // SMTP 服务器
      $mail->Port = 25;// SMTP服务器的端口号
      $mail->Username = "abcdii"; // SMTP服务器用户名
      $mail->Password = "xxxx"; // SMTP服务器密码
      $mail->SetFrom('[email protected]', 'liangdong');
      $mail->AddReplyTo("[email protected]","liangdong");
      $mail->Subject = $subject;
      $mail->AltBody = "To view the message, please use an HTML compatible email viewer! - From www.jiucool.com"; // optional, comment out and test
      $mail->MsgHTML($body);
      $address = $to;
      $mail->AddAddress($address, "liangdong");
      //$mail->AddAttachment("images/phpmailer.gif"); // attachment  
      //$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
      if(!$mail->Send()) {
      echo "Mailer Error: " . $mail->ErrorInfo;
      } else {
      echo "Message sent!恭喜,邮件发送成功!";
      }
      }
    postmail_jiucool_com('[email protected]', '我是梁栋', '你好');
    ?>
      

  5.   

    两处,一是将对象charset设为utf-8
    第二你的文件编码也要设为utf-8
    可以用dw或是editplus修改页面属性
    如果是嵌入网页中,浏览器编码最好也设置一下
    <meta charset=utf-8>