Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5018613
  • 博文数量: 891
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8636
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(891)

文章存档

2020年(8)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类:

2009-03-26 14:30:44

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

阅读(3907) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~