PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括:
*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址
*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable
*.支持SMTP验证
*.支持冗余SMTP服务器
*.支持带附件的邮件和Html格式的邮件
*.自定义邮件头
*.支持在邮件中嵌入图片
*.调试灵活
*.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等
*.可运行在任何平台之上
PHPMailer的官方网站是:http://phpmailer.worxware.com/ 下载:https://github.com/Synchro/PHPMailer
一、使用示例:
testmail.php
<?php
/**
* Simple example script using PHPMailer with exceptions enabled
* @package phpmailer
* @version $Id$
*/
require './phpmailer/class.phpmailer.php';
try {
$mail = new PHPMailer(true); //New instance, with exceptions enabled
$body = file_get_contents('contents.html');
$body = preg_replace('/\\/','', $body); //Strip backslashes
$mail->IsSMTP(); // tell the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 25; // set the SMTP server port
$mail->Host = "smtp.qq.com"; // SMTP server
$mail->Username = "gxlkan@qq.com"; // SMTP server username
$mail->Password = "password"; // SMTP server password
// $mail->IsSendmail(); // tell the class to use Sendmail
$mail->AddReplyTo("gxlkan@qq.com","First Last33");
$mail->From = "gxlkan@qq.com";
$mail->FromName = "First Last";
$to = "3wqqq23@qq.com";
$mail->AddAddress($to);
$mail->Subject = "First PHPMailer Message11";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!11"; // optional, comment out and test
$mail->WordWrap = 80; // set word wrap
$mail->MsgHTML($body);
$mail->IsHTML(true); // send as HTML
$mail->Send();
echo 'Message has been sent.';
} catch (phpmailerException $e) {
echo $e->errorMessage();
}
?>
二、群发邮件
indexmail.php
<?php
header ( 'Content-Type: text/html; charset=utf-8' );
require ("phpmailer/class.phpmailer.php");
error_reporting ( E_ERROR );
$handle_err = fopen ( 'error.log', 'a+b' );
$handle_rig = fopen ( 'right.log', 'a+b' );
$counter = 0;
$mailconfig = array (
'FromName' => '管理员',
'SMTPAuth' => true,
'CharSet' => 'utf8',
'Encoding' => 'base64'
);
//Mail STMP 服务器 配置可能需要大量的账号,不然易被邮箱服务器给屏蔽掉了
$mailservers = array (
array (
'host' => 'smtp.163.com',
'username' => 'test1@163.com',
'password' => 'test1'
),array (
'host' => 'smtp.163.com',
'username' => 'test2@163.com',
'password' => 'test2'
),array (
'host' => 'smtp.163.com',
'username' => 'test3@163.com',
'password' => 'test3'
)
);
// 邮件内容
$body = file_get_contents ( 'contents.html' );
$sendto_email_arr = array(
'gxwwn@qq.com',
'39sw23@qq.com',
'399823@qq.com',
'3aaa9823@qq.com',
'3qq3@qq.com',
'www3@qq.com',
);
foreach($sendto_email_arr as $key=>$val){
smtp_mail ( $val, '欢迎你的到来', $body, array ('email.txt'));
}
function smtp_mail($sendto_email, $subject, $body, $att = array()) {
global $handle, $mailconfig, $mailservers, $counter;
$mail = new PHPMailer ();
$mail->IsSMTP ();
$mailserver = $mailservers [$counter % count($mailservers)];
$mail->Host = $mailserver ['host'];
$mail->Username = $mailserver ['username'];
$mail->Password = $mailserver ['password'];
$mail->FromName = $mailconfig ['FromName'];
$mail->SMTPAuth = $mailconfig ['SMTPAuth'];
$mail->From = $mail->Username;
$mail->CharSet = $mailconfig ['CharSet'];
$mail->Encoding = $mailconfig ['Encoding'];
$mail->AddAddress ( $sendto_email );
// 对附件文件的处理
foreach ( $att as $key => $val ) {
if (! empty ( $val )) {
$mail->AddAttachment ( $val ); // 注意要给绝对路径
}
}
$mail->IsHTML ( true );
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AltBody = "text/html";
if (! $mail->Send ()){
//将错误写入到错误日志文件
fwrite ( $handle_err, $sendto_email."--".($mail->From)."rn" );
}else{
echo "邮件发送成功给:$sendto_email -- $counter<br/>";
fwrite ( $handle_rig, $sendto_email."--".($mail->From)."rn" );
}
$counter ++;
}
// for ($i=0;$i<count($mailservers);$i++){
// 参数说明(发送地址, 邮件主题, 邮件内容,附件绝对路径)
// smtp_mail ( '88888@qq.com', '欢迎你的到来', $body, array ('email.txt') );
// }
fclose($handle);
?>
转载来自:http://www.oschina.net/code/snippet_270698_18995