欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHPMailer PHP邮件发送类

程序员文章站 2024-01-13 09:08:58
...

一、PHPMailer简介

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

由于PHP自带mail() 函数功能并不完善,只能发送文本的e-mail,并且mail() 函数只能应用在Linux 服务器,还有一个最大的问题就是使用mail() 函数发送的邮件没有进行身份验证,很多邮件收不到使用 mail() 函数发送的邮件或者发送的邮件直接进入垃圾邮箱。而PHPMailer给我们提供了所有的邮件发送方式,我们可以按需选择适合的邮件处理方法。

PHPMailer 是一个功能强大的邮件类,其主要功能特点:

支持邮件 s/mime加密的数字签名

支持邮件多个 TOs, CCs, BCCs and REPLY-TOs

可以工作在任何服务器平台,所以不用担心WIN平台无法发送邮件的问题的

支持文本/HTML格式邮件

可以嵌入image图像

对于邮件客户端不支持HTML阅读的进行支持

功能强大的发送邮件调试功能debug

自定义邮件header

冗余SMTP服务器支持

支持8bit, base64, binary, and quoted-printable 编码

文字自动换行

支持多附件发送功能

支持SMTP服务器验证功能

在Sendmail, qmail, Postfix, Gmail, Imail, Exchange 等平台测试成功

提供的下载文件中,包括内容详细的说明文档及示例说明,所以不用担心难于上手的问题!

PHPMailer 非常小巧、简单、方便、快捷

二、PHPMailer使用

1.首先是下载PHPMailer

http://code.google.com/a/apache-extras.org/p/phpmailer/

2.解压

从中取出class.phpmailer.php 和 class.smtp.php 放到你的项目的文件夹

3.创建发送邮件的函数,其中你需要配置smtp服务器

function postmail($to,$subject = '',$body = ''){
//Author:Jiucool WebSite: http://www.jiucool.com
//$to 表示收件人地址 $subject 表示邮件标题 $body表示邮件正文
//error_reporting(E_ALL);
error_reporting(E_STRICT);
date_default_timezone_set('Asia/Shanghai');//设定时区东八区
require_once('class.phpmailer.php');
include('class.smtp.php');
$mail = new PHPMailer(); //new一个PHPMailer对象出来
$body = eregi_replace("[]",'',$body); //对邮件内容进行必要的过滤
$mail->CharSet ="GBK";//设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->IsSMTP(); // 设定使用SMTP服务
$mail->SMTPDebug = 1; // 启用SMTP调试功能
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // 启用 SMTP 验证功能
$mail->SMTPSecure = "ssl"; // 安全协议,可以注释掉
$mail->Host = 'stmp.163.com'; // SMTP 服务器
$mail->Port = 25; // SMTP服务器的端口号
$mail->Username = 'wangliang_198x'; // SMTP服务器用户名,PS:我乱打的
$mail->Password = 'password'; // SMTP服务器密码
$mail->SetFrom('xxx@xxx.xxx', 'who');
$mail->AddReplyTo('xxx@xxx.xxx','who');
$mail->Subject = $subject;
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional, comment out and test
$mail->MsgHTML($body);
$address = $to;
$mail->AddAddress($address, '');
//$mail->AddAttachment("images/phpmailer.gif"); // attachment
//$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
// echo "Message sent!恭喜,邮件发送成功!";
}
}

4. 使用函数

postmail('scutephp@qq.com','My subject','PHP建站门户');

三、phpmailer详细使用说明

A开头:

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

AddAddress--方法
出自:PHPMailer::AddAddress(),文件:class.phpmailer.php
说明:增加收件人。参数1为收件人邮箱,参数2为收件人称呼。例 AddAddress("xiaoxiaoxiaoyu@xiaoxiaoyu.cn","xiaoxiaoyu"),但参数2可选,AddAddress(xiaoxiaoxiaoyu@xiaoxiaoyu.cn)也是可以的。
函数原型: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--属性
出自: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 说明:设置每行最大字符数,超过改数后自动换行