解决PHPMailer邮件标题中文乱码
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));
建议继续学习:
- windows下压缩包在linux解压乱码的解决办法 (阅读:4920)
- Linux screen窗口中文乱码问题 (阅读:4808)
- 一款不错的php邮件发送程序 (阅读:4569)
- linux下vim的编译以及终端乱码的最终解决方案 (阅读:4309)
- java中文乱码解决之道(六)—–javaWeb中的编码解码 (阅读:3824)
- PHP截取汉字出现乱码的解决方法 (阅读:3297)
- 如何在PHP下载文件名中解决乱码 (阅读:3187)
- java中文乱码解决之道(一)—–认识字符集 (阅读:3255)
- 让phpmailer支持中文名称的附件和邮件标题中文乱码 (阅读:3176)
- 批量替换<img>标签为PHPmailer显示格式 (阅读:3020)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:nick 来源: Codyy技术团队
- 标签: phpmailer 乱码
- 发布时间:2009-10-14 13:32:03
-
[903] WordPress插件开发 -- 在插件使用 -
[135] 解决 nginx 反向代理网页首尾出现神秘字 -
[56] 整理了一份招PHP高级工程师的面试题 -
[54] Innodb分表太多或者表分区太多,会导致内 -
[54] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 全站换域名时利用nginx和javascri -
[52] 海量小文件存储 -
[52] CloudSMS:免费匿名的云短信 -
[51] 用 Jquery 模拟 select -
[49] ps 命令常见用法
