日期:2014-05-17  浏览次数:20534 次

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

------解决方案--------------------
C/C++ code
我试验了一下,成功了,代码网上直接摘过来填了填,标题及内容都不乱码。

楼主的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('abcdii@163.com', 'liangdong');
  $mail->AddReplyTo("abcdii@163.com","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('120848369@qq.com', '我是梁栋', '你好');
?>