今天看啥
热点:

phpmailer是一个强大的php编写的邮件发送类,使用它可以更加便捷的发送邮件,并且还能发送附件和 HTML 格式的邮件,同时还能使用 SMTP 服务器来发送邮件。

虽然php自己有个mail()函数,但是这个mail函数在使用上还有很多极限性,还有一个最大的问题就是使用 mail() 函数发送的邮件没有进行身份验证,很多邮件收不到使用 mail() 函数发送的邮件或者发送的邮件直接进入垃圾邮箱,在实际应用中还是使用比较少的。

phpmailer类文件下载地址:https://code.google.com/a/apache-extras.org/p/phpmailer/,下载下来的文件包括完整的代码和一些使用例子。

phpMailer的两种配置

 

phpMailer的两种配置,记录一下,差别在一个要写完整邮件地址,一个只要填@前面的部分。
 

只要填@前面的部分的phpmailer配置


一、自己的企业邮局发信

$mail = new PHPMailer();
//$body = file_get_contents("mail/".$date.".html");
//$body = eregi_replace("[\]",'',$body);

$body =$html;
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "
mail.bkjia.com"; // SMTP server
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)

$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "mail.bkjia.com"; // sets the SMTP server
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = "[email protected]bkjia.com"; // SMTP account username
email地址要完整
$mail->Password = "123456789"; // SMTP account password
$mail->SetFrom('[email protected]', 'bkjia.com');
$mail->AddReplyTo("[email protected]","bkjia.com");

$subject="感谢您注册成为bkjia.com的会员";

(另外要设置好域名MX记录,略)



二、通过163转发

$mail = new PHPMailer();

//$body = file_get_contents("mail/".$date.".html");
//$body = eregi_replace("[\]",'',$body);

$body =$html;

$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "smtp.163.com"; // SMTP server
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)

$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "
smtp.163.com"; // sets the SMTP server
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = "
fengandeguozi"; // SMTP account username 只要@前面的部分
$mail->Password = "123456789"; // SMTP account password

$mail->SetFrom('[email protected]', 'bkjia.com');

$mail->AddReplyTo("[email protected]","bkjia.com");


$subject="感谢您注册成为bkjia.com的会员";
$mail->Subject = "=?utf-8?B?".base64_encode($subject)."?=";
// 防止乱码
 

只要填全部邮箱地址的phpmailer配置



一、自己的企业邮局发信

$mail = new PHPMailer();
//$body = file_get_contents("mail/".$date.".html");
//$body = eregi_replace("[\]",'',$body);

$body =$html;
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "
mail.bkjia.com"; // SMTP server
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)

$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "mail.bkjia.com"; // sets the SMTP server
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = "[email protected]bkjia.com"; // SMTP account username
email地址要完整
$mail->Password = "123456789"; // SMTP account password
$mail->SetFrom('[email protected]', 'bkjia.com');
$mail->AddReplyTo("[email protected]","bkjia.com");

$subject="感谢您注册成为bkjia.com的会员";

(另外要设置好域名MX记录,略)



二、通过163转发

$mail = new PHPMailer();

//$body = file_get_contents("mail/".$date.".html");
//$body = eregi_replace("[\]",'',$body);

$body =$html;

$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "smtp.163.com"; // SMTP server
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)

$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "
smtp.163.com"; // sets the SMTP server
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = "
fengandeguozi"; // SMTP account username 只要@前面的部分
$mail->Password = "123456789"; // SMTP account password

$mail->SetFrom('[email protected]', 'bkjia.com');

$mail->AddReplyTo("[email protected]","bkjia.com");


$subject="感谢您注册成为bkjia.com的会员";
$mail->Subject = "=?utf-8?B?".base64_encode($subject)."?=";
// 防止乱码

phpmailer实例分析:

使用示例一:

 

 

<?php
include "phpmailer/class.phpmailer.php";
 
try
{
	//New instance, with exceptions enabled
	$mail = new PHPMailer(true);
 
	//Sets the CharSet of the message,发送中文文件必须设置编码为UTF-8,否则会出现乱码
	$mail->CharSet = 'UTF-8';
 
	// tell the class to use SMTP
	$mail->IsSMTP();
 
	// enable SMTP authentication
	$mail->SMTPAuth = true;
 
	// set the SMTP server port
	$mail->Port = 465;
 
	// SMTP server
	$mail->Host = "smtp.163.com";
 
	// SMTP server username
	$mail->Username = "[email protected]";
 
	// SMTP server password
	$mail->Password = "password";
 
	// tell the class to use Sendmail
	$mail->IsSendmail();
 
	//设置发件人邮件地址、用户名
	$mail->From = "[email protected]";
	$mail->FromName = "username";
 
	//设置回信人地址
	$mail->AddReplyTo("[email protected]");
 
	//设置收件人地址
	$mail->AddAddress('[email protected]');
 
	//邮件标题
	$mail->Subject = "PHP通过phpmailer进行邮件发送";
 
	// optional, comment out and test
	$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
 
	// set word wrap
	$mail->WordWrap = 80;
 
	$content = 'PHP通过phpmailer进行邮件发送';
 
	$mail->MsgHTML($content);
 
	// send as HTML
	$mail->IsHTML(true);
 
	$mail->Send();
	echo 'Message has been sent.';
}
catch(phpmailerException $e)
{
	echo $e->errorMessage();
}


以上就是phpmailer使用的简单示例,phpmailer还有很多功能还得慢慢研究。

使用实例二

 

require_once('class.phpmailer.php'); 
require_once("class.smtp.php"); 
$mail = new PHPMailer(); 

$mail->CharSet ="UTF-8"; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置为 UTF-8 
$mail->IsSMTP(); // 设定使用SMTP服务 
$mail->SMTPAuth = true; // 启用 SMTP 验证功能 
$mail->SMTPSecure = "ssl"; // SMTP 安全协议 
$mail->Host = "smtp.gmail.com"; // SMTP 服务器 
$mail->Port = 465; // SMTP服务器的端口号 
$mail->Username = "[email protected]"; // SMTP服务器用户名 
$mail->Password = "your_password"; // SMTP服务器密码 
$mail->SetFrom('发件人地址', '发件人名称'); // 设置发件人地址和名称 
$mail->AddReplyTo("邮件回复人地址","邮件回复人名称"); 
// 设置邮件回复人地址和名称 
$mail->Subject = ''; // 设置邮件标题 
$mail->AltBody = "为了查看该邮件,请切换到支持 HTML 的邮件客户端"; 
// 可选项,向下兼容考虑 
$mail->MsgHTML(''); // 设置邮件内容 
$mail->AddAddress('收件人地址', "收件人名称"); 
//$mail->AddAttachment("images/phpmailer.gif"); // 附件 
if(!$mail->Send()) { 
echo "发送失败:" . $mail->ErrorInfo; 
} else { 
echo "恭喜,邮件发送成功!"; 
} 
文章源自:帮客之家,原文:http://www.bkjia.com/jingyan/phpmailer.html

PHPMailer发送邮件实例分析

 

使用PHPMailer发送邮件:

IsSMTP(); 
$mail->CharSet='UTF-8'; //设置邮件的字符编码,这很重要,不然中文乱码 
$mail->SMTPAuth = true; //开启认证 
$mail->Port = 25; 
$mail->Host = "smtp.163.com"; 
$mail->Username = "[email protected]"; 
$mail->Password = "这是密码"; 
//$mail->IsSendmail(); //如果没有sendmail组件就注释掉,否则出现“Could not execute: /var/qmail/bin/sendmail ”的错误提示 
$mail->AddReplyTo("[email protected]","mckee");//回复地址 
$mail->From = "[email protected]"; 
$mail->FromName = "www.phpddt.com"; 
$to = "[email protected]"; 
$mail->AddAddress($to); 
$mail->Subject = "phpmailer测试标题"; 
$mail->Body = "

phpmail演示

这是php点点通(www.phpddt.com)对phpmailer的测试内容"; 
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; //当邮件不支持html时备用显示,可以省略 
$mail->WordWrap = 80; // 设置每行字符串的长度 
//$mail->AddAttachment("f:/test.png"); //可以添加附件 
$mail->IsHTML(true); 
$mail->Send(); 
echo '邮件已发送'; 
} catch (phpmailerException $e) { 
echo "邮件发送失败:".$e->errorMessage(); 
} 
?> 

打开我的qq邮件可以看到:
使用PHPMailer发送邮件
测试非常顺利.

从上图可以看出,PHPMailer是支持html格式发送,而且支持发送图片,附件!经过测试,对各种SMTP服务器兼容很好!

添加附件如果报错:

那是因为(set_magic_quotes_runtime())已经关闭。并且在PHP6中已经完全移除此特性。

你可以注释或者删除掉出错的行,或者是在set_magic_quotes_runtime()前面加@符号
或者是配置;error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

 

PHPMailer及测试文件下载:phpmailer.rar

 

 

PHPmailer debug的使用说明教程

 

phpmailer 使用过程中要是存在问题可以通过debug来寻找原因,如果在虚拟空间下无法使用,肯能有多个原因:
  1、你打开phpmailer的debug,并把debu级别调成最详细的级别,这样能够显示一些问题信息,便于排错。
  2、是不是你的主机不支持curl也不支持fsockopen等函数,进行了函数封禁,导致无法正常访问SMTP服务器。
 


附:

A开头: 

$AltBody--属性 
出自:PHPMailer::$AltBody 
文件:class.phpmailer.php 
说明:该属性的设置是在邮件正文不支持HTML的备用显示 

AddAddress--方法 
出自:PHPMailer::AddAddress(),文件:class.phpmailer.php 
说明:增加收件人。参数1为收件人邮箱,参数2为收件人称呼。例 AddAddress("[email protected]","xiaoxiaoyu"),但参数2可选,AddAddress([email protected])也是可以的。 
函数原型:public function AddAddress($address, $name = '') {} 

AddAttachment--方法 
出自:PHPMailer::AddAttachment() 
文件:class.phpmailer.php。 
说明:增加附件。 
参数:路径,名称,编码,类型。其中,路径为必选,其他为可选 
函数原型: 
AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream'){} 

AddBCC--方法 
出自:PHPMailer::AddBCC() 
文件:class.phpmailer.php 
说明:增加一个密送。抄送和密送的区别请看[SMTP发件中的密送和抄送的区别] 。 
参数1为地址,参数2为名称。注意此方法只支持在win32下使用SMTP,不支持mail函数 
函数原型:public function AddBCC($address, $name = ''){} 

AddCC --方法 
出自:PHPMailer::AddCC() 
文件:class.phpmailer.php 
说明:增加一个抄送。抄送和密送的区别请看[SMTP发件中的密送和抄送的区别] 。 
参数1为地址,参数2为名称注意此方法只支持在win32下使用SMTP,不支持mail函数 
函数原型:public function AddCC($address, $name = '') {} 

AddCustomHeader--方法 
出自:PHPMailer::AddCustomHeader() 
文件:class.phpmailer.php 
说明:增加一个自定义的E-mail头部。 
参数为头部信息 
函数原型:public function AddCustomHeader($custom_header){} 

AddEmbeddedImage --方法 
出自:PHPMailer::AddEmbeddedImage() 
文件:class.phpmailer.php 
说明:增加一个嵌入式图片 
参数:路径,返回句柄[,名称,编码,类型] 
函数原型:public function AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') {} 
提示:AddEmbeddedImage(PICTURE_PATH. "index_01.jpg ", "img_01 ", "index_01.jpg "); 
在html中引用 

AddReplyTo--方法 
出自:PHPMailer:: AddReplyTo() 
文件:class.phpmailer.php 
说明:增加回复标签,如"Reply-to" 
参数1地址,参数2名称 
函数原型:public function AddReplyTo($address, $name = '') {} 

AddStringAttachment-方法 
出自:PHPMailer:: AddStringAttachment() 
文件:class.phpmailer.php 
说明:增加一个字符串或二进制附件(Adds a string or binary attachment (non-filesystem) to the list.?) 
参数:字符串,文件名[,编码,类型] 
函数原型:public function AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream') {} 

Authenticate--方法 
出自:SMTP::Authenticate() 
文件:class.smtp.php 
说明:开始SMTP认证,必须在Hello()之后调用,如果认证成功,返回true, 
参数1用户名,参数2密码 
函数原型:public function Authenticate($username, $password) {} 

B开头 

$Body--属性 
出自:PHPMailer::$Body 
文件: class.phpmailer.php 
说明:邮件内容,HTML或Text格式 

C开头 

$CharSet--属性 
出自:PHPMailer::$CharSet 
文件:class.phpmailer.php 
说明:邮件编码,默认为iso-8859-1 

$ConfirmReadingTo--属性 
出自:PHPMailer::$ConfirmReadingTo 文件class.phpmailer.php 
说明:回执? 

$ContentType--属性 
出自:PHPMailer::$ContentType 
文件: class.phpmailer.php 
说明:文档的类型,默认为"text/plain" 

$CRLF--属性 
出自:PHPMailer::$ContentType 
文件:class.phpmailer.php 
说明:SMTP回复结束的分隔符(SMTP reply line ending?) 

class.phpmailer.php--对象 
出自:class.phpmailer.php 
文件: class.phpmailer.php 
说明:phpmailer对象 

class.smtp.php--对象 
出自:class.smtp.php 文件: class.smtp.php 
说明:SMTP功能的对象 

ClearAddresses--方法 
出自:PHPMailer::ClearAddresses() 
文件: class.phpmailer.php 
说明:清除收件人,为下一次发件做准备。返回类型是void 

ClearAllRecipients--方法 
出自:PHPMailer::ClearAllRecipients() 
文件: class.phpmailer.php 
说明:清除所有收件人,包括CC(抄送)和BCC(密送) 

ClearAttachments--方法 
出自:PHPMailer::ClearAttachments() 
文件: class.phpmailer.php 
说明:清楚附件 

ClearBCCs--方法 
出自:PHPMailer::ClearBCCs() 文件 class.phpmailer.php 
说明:清楚BCC (密送) 

ClearCustomHeaders--方法 
出自:PHPMailer::ClearCustomHeaders() 
文件: class.phpmailer.php 
说明:清楚自定义头部 

ClearReplyTos--方法 
出自:PHPMailer::ClearReplyTos() 
文件: class.phpmailer.php 
说明:清楚回复人 

Close--方法 
出自:SMTP::Close() 
文件: class.smtp.php 
说明:关闭一个SMTP连接 

Connect--方法 
出自:SMTP::Connect() 
文件: class.smtp.php 
说明:建立一个SMTP连接[/color]Mailer.html 

$ContentType--属性 
出自:PHPMailer::$ContentType 
文件: class.phpmailer.php 
说明:文档的类型,默认为"text/plain" 

D开头 
$do_debug--属性 
出自:SMTP::$do_debug 
文件:class.smtp.php 
说明:SMTP调试输出 

Data-方法 
出自:SMTP::Data() 
文件:class.smtp.php 
说明:向服务器发送一个数据命令和消息信息(sendsthemsg_datatotheserver) 

E开头 

$Encoding--属性 
出自:PHPMailer::$Encoding 
文件:class.phpmailer.php 
说明:设置邮件的编码方式,可选:"8bit","7bit","binary","base64",和"quoted-printable". 

$ErrorInfo--属性 
出自:PHPMailer::$ErrorInfo 
文件:class.phpmailer.php 
说明:返回邮件SMTP中的最后一个错误信息 

Expand--方法 
出自:SMTP::Expand() 
文件:class.smtp.php 
说明:返回邮件列表中所有用户。成功则返回数组,否则返回 false(Expandtakesthenameandaskstheservertolistallthepeoplewhoaremembersofthe_list_.Expandwillreturnbackandarrayoftheresultorfalseifanerroroccurs.) 

F开头: 

$From--属性 
出自:PHPMailer::$From文件class.phpmailer.php 
说明:发件人E-mail地址 
$FromName--属性 
出自:PHPMailer::$FromName 
文件:class.phpmailer.php 
说明:发件人称呼 

H开头: 

$Helo--属性 
出自:PHPMailer::$Helo 
文件:class.phpmailer.php 
说明:设置SMTPHelo,默认是$Hostname(SetstheSMTPHELOofthemessage(Defaultis$Hostname).) 

$Host--属性 
出自:PHPMailer::$Host 
文件:class.phpmailer.php 
说明:设置SMTP服务器,格式为:主机名[端口号],如smtp1.example.com:25和smtp2.example.com都是合法的 

$Hostname--属性 
出自:PHPMailer::$Hostname 
文件:class.phpmailer.php 
说明:设置在Message-Id和andReceivedheaders中的hostname并同时被$Helo使用。如果为空,默认为SERVER_NAME或'localhost.localdomain" 

Hello--方法 
出自:SMTP::Hello() 
文件:class.smtp.php 
说明:向SMTP服务器发送HELO命令 

Help--方法 
出自:SMTP::Help() 
文件:class.smtp.php 
说明:如果有关键词,得到关键词的帮助信息 

I开头: 

IsError--方法 
出自:PHPMailer::IsError() 
文件:class.phpmailer.php 
说明:返回是否有错误发生 

IsHTML--方法 
出自:PHPMailer::IsHTML() 
文件:class.phpmailer.php 
说明:设置信件是否是HTML格式 

IsMail--方法 
出自:PHPMailer::IsMail() 
文件:class.phpmailer.php 
说明:设置是否使用php的mail函数发件 

IsQmail--方法 
出自:PHPMailer::IsQmail() 
文件:class.phpmailer.php 
说明:设置是否使用qmailMTA来发件 

IsSendmail--方法 
出自:PHPMailer::IsSendmail() 
文件:class.phpmailer.php 
说明:是否使用$Sendmail程序来发件 

IsSMTP--方法 
出自:PHPMailer::IsSMTP() 
文件:class.phpmailer.php 
说明:是否使用SMTP来发件 

M开头: 

$Mailer--属性 
出自:PHPMailer::$Mailer 
文件:class.phpmailer.php 
说明:发件方式,("mail","sendmail",or"smtp").中的一个 

Mail--方法 
出自:SMTP::Mail() 
文件:class.smtp.php 
说明:从$from中一个邮件地址开始处理,返回true或false。如果是true,则开始发件 

N开头: 

Noop--方法 
出自:SMTP::Noop() 
文件:class.smtp.php 
说明:向SMTP服务器发送一个NOOP命令 

P开头: 
$Password--属性 
出自:PHPMailer::$Password 
文件:class.phpmailer.php 
说明:设置SMTP的密码 

$PluginDir--属性 
出自:PHPMailer::$PluginDir 
文件:class.phpmailer.php 
说明:设置phpmailer的插件目录,仅在smtpclass不在phpmailer目录下有效 

$Port--属性 
出自:PHPMailer::$Port 
文件:class.phpmailer.php 
说明:设置SMTP的端口号 

$Priority--属性 
出自:PHPMailer::$Priority 
文件:class.phpmailer.php 
说明:设置邮件投递优先等级。1=紧急,3=普通,5=不急 

PHPMailer--对象 
出自:PHPMailer 
文件:class.phpmailer.php 
说明:PHPMailer-PHPemailtransportclass 

Q开头 

Quit--方法 
出自:SMTP::Quit() 
文件:class.smtp.php 
说明:向服务器发送Quit命令,如果没有错误发生。那么关闭sock,不然$close_on_error为true 

R开头 

Recipient--方法 
出自:SMTP::Recipient() 
文件:class.smtp.php 
说明:使用To向SMTP发送RCPT命令,参数为:$to 

Reset--方法 
出自:SMTP::Reset() 
文件:class.smtp.php 
说明:发送RSET命令从而取消处理中传输。成功则返回true,否则为false 

S开头: 

$Sender--属性 
出自:PHPMailer::$Sender 
文件:class.phpmailer.php 
说明:SetstheSenderemail(Return-Path)ofthemessage.Ifnotempty,willbesentvia-ftosendmailoras'MAILFROM'insmtpmode. 

$Sendmail--属性 
出自:PHPMailer::$Sendmail 
文件:class.phpmailer.php 
说明:设置发件程序的目录 

$SMTPAuth--属性 
出自:PHPMailer::$SMTPAuth 
文件:class.phpmailer.php 
说明:设置SMTP是否需要认证,使用Username和Password变量 

$SMTPDebug--属性 来源www.bkjia.com
出自:PHPMailer::$SMTPDebug 
文件:class.phpmailer.php 
说明:设置SMTP是否调试输出? 

$SMTPKeepAlive--属性 
出自:PHPMailer::$SMTPKeepAlive 
文件:class.phpmailer.php 
说明:在每次发件后不关闭连接。如果为true,则,必须使用SmtpClose()来关闭连接 

$SMTP_PORT--属性 
出自:SMTP::$SMTP_PORT 
文件:class.smtp.php 
说明:设置SMTP端口 

$Subject--属性 
出自:PHPMailer::$Subject 
文件:class.phpmailer.php 
说明:设置信件的主题 

Send--方法 
出自:SMTP::Send() 
文件:class.smtp.php 
说明:从指定的邮件地址开始一个邮件传输 

Send--方法 
出自:PHPMailer::Send() 
文件:class.phpmailer.php 
说明:创建邮件并制定发件程序。如果发件不成功,则返回false,请使用ErrorInfo来查看错误信息 

SendAndMail--方法 
出自:SMTP::SendAndMail() 
文件:class.smtp.php 
说明:从指定的邮件地址开始一个邮件传输 

SendOrMail--方法 
出自:SMTP::SendOrMail() 
文件:class.smtp.php 
说明:从指定的邮件地址开始一个邮件传输 

SetLanguage--方法 
出自:PHPMailer::SetLanguage() 
文件:class.phpmailer.php 
说明:设置phpmailer错误信息的语言类型,如果无法加载语言文件,则返回false,默认为english 

SMTP--方法 
出自:SMTP::SMTP() 
文件:class.smtp.php 
说明:初始化一个对象以便数据处于一个已知的状态 

SMTP--对象 
出自:SMTP 
文件:class.smtp.php 
说明:SMTP对象 

SmtpClose--方法 
出自:PHPMailer::SmtpClose() 
文件:class.phpmailer.php 
说明:如果有活动的SMTP则关闭它。 

T开头 

$Timeout--属性 
出自:PHPMailer::$Timeout 
文件:class.phpmailer.php 
说明:设置SMTP服务器的超时(单位:秒)。注意:在win32下,该属性无效 

Turn--方法 
出自:SMTP::Turn() 
文件:class.smtp.php 
说明:这是一个可选的SMTP参数,目前phpmailer并不支持他,可能未来支持 

U开头 

$Username--属性 
出自:PHPMailer::$Username 
文件:class.phpmailer.php 
说明:设置SMTP用户名 

V开头 

$Version--属性 
出自:PHPMailer::$Version 
文件:class.phpmailer.php 
说明:返回Phpmailer的版本 

Verify--方法 
出自:SMTP::Verify() 
文件:class.smtp.php 
说明:通过服务器检查用户名是否经过验证 

W开头: 

$WordWrap--属性 
出自:PHPMailer::$WordWrap 
文件:class.phpmailer.php 
说明:设置每行最大字符数,超过改数后自动换行 

来源:帮客之家,原文地址:http://www.bkjia.com/jingyan/phpmailer.html

评论暂时关闭