KUNPHP 2013-04-26
代码如下:
/*PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括: *.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址 *.支持多种邮件编码包括:8bit,base64,binary和quoted-printable *.支持SMTP验证 *.支持冗余SMTP服务器 *.支持带附件的邮件和Html格式的邮件 *.自定义邮件头 *.支持在邮件中嵌入图片 *.调试灵活 *.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等 *.可运行在任何平台之上 phpMailer是一个非常强大的php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、富文本内容,上传附件,..... 官方网站:http://phpmailer.worxware.com/ 下载地址:http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list */ require_once('include/PHPMailer/class.phpmailer.php'); //导入PHPMAILER类 $mail = new PHPMailer(); //创建实例 $mail -> CharSet='utf-8'; //设置字符集 $mail -> SetLanguage('ch','include/PHPMailer/language/'); //设置语言类型和语言文件所在目录 $mail -> IsSMTP(); //使用SMTP方式发送 $mail -> SMTPAuth = true; //设置服务器是否需要SMTP身份验证 $mail -> Host = SMTP_SERVER; //SMTP 主机地址 $mail -> Port = SMTP_SERVER_PORT; //SMTP 主机端口 $mail -> From = SMTP_USER_MAIL; //发件人EMAIL地址 $mail -> FromName = 'jasonxu'; //发件人在SMTP主机中的用户名 $mail -> Username = SMTP_USER_NAME; //发件人的姓名 $mail -> Password = SMTP_USER_PASS; //发件人在SMTP主机中的密码 $mail -> Subject = '测试邮件的标题'; //邮件主题 $mail -> AltBody = 'text/html'; //设置在邮件正文不支持HTML时的备用显示 $mail -> Body = '测试邮件的内容';//邮件内容做成 $mail -> IsHTML(true); //是否是HTML邮件 $mail -> AddAddress('chinajason2008#gmail.com','jasonxu'); //收件人的地址和姓名 $mail -> AddReplyTo('chinajason2008#gmail.com','jasonxu'); //收件人回复时回复给的地址和姓名 $mail -> AddAttachment('include/id.csv','att.csv');//附件的路径和附件名称 if(!$mail -> Send()) //发送邮件 var_dump($mail -> ErrorInfo); //查看发送的错误信息
以前项目中邮件发送的一个实例,整理个缩略版,方便套用:
代码如下:
$body=$_smtp_body; $mail=new PHPMailer();//得到一个PHPMailer实例 //$mail->SMTPSecure='tls'; $mail->CharSet="utf-8"; //设置编码 $mail->IsSMTP();//设置采用SMTP方式发送邮件 $mail->Host=$_smtp_server;//设置SMTP邮件服务器的地址 $mail->Port=$_smtp_port;//设置邮件服务器的端口,默认为25 $mail->From=$_smtp_from_mail; //设置发件人的邮箱地址 $mail->FromName=$_smtp_from_name;//设置发件人的姓名 $mail->Username=$_smtp_username; $mail->Password=$_smtp_password; $mail->AddAddress("$email","");//设置收件的地址(参数1)和姓名(参数2) $mail->SMTPAuth=true;//开启SMTP认证 $mail->Subject=$_smtp_subject;//设置邮件的标题 //$mail->AltBody="text/html"; $mail->Body=$body;//邮件内容 $mail->IsHTML(true);//设置内容是否为html类型 //$mail->WordWrap=50; //设置每行的字符数 //$mail->AddReplyTo("[email protected]","samzhang"); //设置回复的收件人的地址 $mail->SMTPDebug=0; if($mail->Send()){//发送邮件 exit 'ok'; }else{ exit 'fail'; }
解决方法:
代码如下:
public function IsSMTP() { $this->Mailer ='SMTP'; // 将smtp ->SMTP ;即原来是小写,现在大写。 } // Choose the mailer and send through it switch($this->Mailer) { case 'sendmail': return $this->SendmailSend($header, $body); case 'SMTP'://同样 将smtp ->SMTP ;即原来是小写,现在大写。 return $this->SmtpSend($header, $body); case 'mail': default: return $this->MailSend($header, $body); }
解决方法:
启用fsockopen函数
首先,在php.ini中去掉下面的两个分号
;extension=php_sockets.dll
;extension=php_openssl.dll
替换fsockopen函数
可以将class.smtp.php文件中fsockopen函数换成pfsockopen函数
3、Could not instantiate mail function
原因:
设置的参数不正确,我使用了gmail做一些基本测试,需要在次设置其他参数。
解决方法:
$mail->SMTPSecure = ‘tls'; //只需要加上这句
注:这种错误我没碰到过,所以在上面的例子中,这个内容我是加了注释的。如果碰到这种错误的,可以使用这句试试。