20150322 利用phpmailer来发送邮件
2015-03-22 Lover雪儿
最近事务繁杂,导致php学习落下了一段时间,记得好久以前学了在doc命令窗口利用smtp来发送邮件,http://www.cnblogs.com/lihaiyan/p/4319853.html ,此处,我们来利用一个强大的PHP类phpmailer来实现邮件的发送。
一、关于PHPMailer
phpMailer是一个非常强大的php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、富文本内容,上传附件,并且使用起来非常方便
对于相关的知识,昆明多彩科技写的很好,http://www.kmwzjs.co ,如下所示
使用前需要一个初始化对象如:$mail = new PHPMailer();
1.phpmailer属性表
属性 (v5.0.0) |
类型 |
默认 |
描述 |
$Priority |
public |
3 |
优先级别(1 = 高, 3 = 中, 5 = 低) |
$CharSet |
public |
iso-8859-1 |
字符集信息 |
$ContentType |
public |
text/plain |
内容的消息类型 |
$Encoding |
public |
8bit |
消息的Encoding,设置有: "8bit", "7bit", "binary", "base64", "quoted-printable". |
$ErrorInfo |
public |
|
邮件发送错误信息. |
$From |
public |
root@localhost |
发件人地址. |
$FromName |
public |
Root User |
发件人姓名. |
$Sender |
public |
|
发件人的返回路径信息, If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode. |
$Subject |
public |
|
邮件主题 |
$Body |
public |
|
邮件正文,可以使用HTML/text,如果是HTML,会设置IsHTML为true. |
$AltBody |
public |
|
纯文本正文,不支持HTML的备用显示 |
$WordWrap |
public |
0 |
达到一定数目自动换行. |
$Mailer |
public |
|
发送邮件的方法: ("mail", "sendmail", or "smtp"). |
$Sendmail |
public |
/usr/sbin/sendmail |
sendmail的路径. |
$PluginDir |
public |
|
PHPMailer插件路径,这是在不同的路径下的PHP include唯一有用的SMTP类Path to PHPMailer plugins. This is now only useful if the SMTP class is in a different directory than the PHP include path. |
$ConfirmReadingTo |
public |
|
回执信息,值为需要接收回执信息的邮箱地址. |
$Hostname |
public |
|
设置主机使用邮件ID和接收头和直升机作为默认字符串.如果为空,由服务器名返回的值是使用或'localhost.localdomain'. |
$Host |
public |
localhost |
SMTP主机,所有主机必须;隔开.可以同时设置多个主机,格式:"smtp1.example.com:25;smtp2.example.com".发送邮件时按照队列尝试. |
$Port |
public |
25 |
SMTP主机端口 |
$Helo |
public |
|
设置SMTP信息 (默认是$Hostname). |
$SMTPAuth |
public |
false |
SMTP服务器是否需要认证,使用了用户名和密码变量. |
$Username |
public |
|
设置 SMTP 用户名. |
$Password |
public |
|
设置 SMTP 密码. |
$Timeout |
public |
10 |
设置SMTP服务延迟时间.这个功能在win32平台不能用. |
$SMTPDebug |
public |
false |
开启SMTP类调试. |
$SMTPKeepAlive |
public |
false |
保持连接,关闭则是SmtpClose(). |
$Version |
public |
|
返回PHPMailer版本号 |
$SingleTo |
public |
false |
Provides the ability to have the TO field process individual emails, instead of sending to entire TO addresses |
2.phpmailer方法表
方法 (v5.0.0) |
类型 |
默认 |
描述 |
set($name, $value) |
string $name |
|
为用户能够创建自己的自定义伪属性. |
addCustomHeader($value) |
string $value |
|
创建自定义页头 . |
MsgHTML($message) |
|
|
使用HTML发送.比如可以定义一些html代码:昆明网站建设 |
IsMail() |
boolean |
true |
设置phpMailer是否使用mail()函数.(true, false or blank) |
IsSMTP() |
boolean |
|
设置phpMailer是否使用 SMTP. 如果设置了该项,其他相关项也需要设置.(true, false or blank) |
IsSendmail() |
boolean |
|
设置phpMailer是否使用Sendmail().(true, false or blank) |
IsQmail() |
boolean |
|
设置phpMailer是否使用Sendmail() MTA. (true, false or blank) |
SetFrom($address, $name = "") |
string $address |
|
增加一个邮件发件人地址. |
AddAddress($address, $name = "") |
string $address |
|
增加一个收件人地址(邮件目的地址). |
AddCC($address, $name = "") |
string $address |
|
增加一个抄送地址. 注意:此功能需要smtp服务器搭建在win32平台. |
AddBCC($address, $name = "") |
string $address |
|
增加一个密送地址. 注意:此功能需要smtp服务器搭建在win32平台. |
AddReplyTo($address, $name = "") |
string $address |
|
增加一个回复地址(别人回复时的地址). |
Send() |
|
|
创建信息和发送邮件,如果发送不成功则返回false,使用ErrorInfo属性可以显示错误描述,发送成功返回true. |
AddAttachment($path, $name = "", $encoding = "base64", |
string $path |
|
添加从本地一个附件.如果找不到该附件就返回false.参数分别是:本地路径,编码,文件类型 |
AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64", |
string $path |
|
增加一个嵌入式附件,包括图像,声音等其他几乎任何文件,一定要设置$type属性,如果是jpeg就使用"image/jpeg",gif则是"image/gif",具体对应的请自行参照相关文件.如果使用MsgHTML()就没用必要使用这个方法. |
ClearAddresses() |
|
|
清除所有收件人地址,返回无效. |
ClearCCs() |
|
|
清除所有抄送地址,返回无效. |
ClearBCCs() |
|
|
清除所有密送地址,返回无效. |
ClearReplyTos() |
|
|
清除所有回复地址,返回无效. |
ClearAllRecipients() |
|
|
清除所有收件人/草送/密送地址,返回无效. |
ClearAttachments() |
|
|
清除所有设置的文件/字符串/二进制附件,返回无效. |
ClearCustomHeaders() |
|
|
清除所有设置的页头,返回无效. |
Send() |
|
|
发送邮件 |
SetLanguage($lang, $langpath) |
string $lang |
|
设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径 |
方法 (v5.0.0) |
类型 |
默认 |
描述 |
set($name, $value) |
string $name |
|
为用户能够创建自己的自定义伪属性. |
addCustomHeader($value) |
string $value |
|
创建自定义页头 . |
MsgHTML($message) |
|
|
使用HTML发送.比如可以定义一些html代码:昆明网站建设 |
IsMail() |
boolean |
true |
设置phpMailer是否使用mail()函数.(true, false or blank) |
IsSMTP() |
boolean |
|
设置phpMailer是否使用 SMTP. 如果设置了该项,其他相关项也需要设置.(true, false or blank) |
IsSendmail() |
boolean |
|
设置phpMailer是否使用Sendmail().(true, false or blank) |
IsQmail() |
boolean |
|
设置phpMailer是否使用Sendmail() MTA. (true, false or blank) |
SetFrom($address, $name = "") |
string $address |
|
增加一个邮件发件人地址. |
AddAddress($address, $name = "") |
string $address |
|
增加一个收件人地址(邮件目的地址). |
AddCC($address, $name = "") |
string $address |
|
增加一个抄送地址. 注意:此功能需要smtp服务器搭建在win32平台. |
AddBCC($address, $name = "") |
string $address |
|
增加一个密送地址. 注意:此功能需要smtp服务器搭建在win32平台. |
AddReplyTo($address, $name = "") |
string $address |
|
增加一个回复地址(别人回复时的地址). |
Send() |
|
|
创建信息和发送邮件,如果发送不成功则返回false,使用ErrorInfo属性可以显示错误描述,发送成功返回true. |
AddAttachment($path, $name = "", $encoding = "base64",$type= "application/octet-stream") |
string $path |
|
添加从本地一个附件.如果找不到该附件就返回false.参数分别是:本地路径,编码,文件类型 |
AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64", |
string $path |
|
增加一个嵌入式附件,包括图像,声音等其他几乎任何文件,一定要设置$type属性,如果是jpeg就使用"image/jpeg",gif则是"image/gif",具体对应的请自行参照相关文件.如果使用MsgHTML()就没用必要使用这个方法. |
ClearAddresses() |
|
|
清除所有收件人地址,返回无效. |
ClearCCs() |
|
|
清除所有抄送地址,返回无效. |
ClearBCCs() |
|
|
清除所有密送地址,返回无效. |
ClearReplyTos() |
|
|
清除所有回复地址,返回无效. |
ClearAllRecipients() |
|
|
清除所有收件人/草送/密送地址,返回无效. |
ClearAttachments() |
|
|
清除所有设置的文件/字符串/二进制附件,返回无效. |
ClearCustomHeaders() |
|
|
清除所有设置的页头,返回无效. |
Send() |
|
|
发送邮件 |
SetLanguage($lang, $langpath) |
string $lang |
|
设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径 |
ClearAttachments() |
|
|
清除所有设置的文件/字符串/二进制附件,返回无效. |
ClearCustomHeaders() |
|
|
清除所有设置的页头,返回无效. |
Send() |
|
|
发送邮件 |
SetLanguage($lang, $langpath) |
string $lang |
|
设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径 |
ClearAttachments() |
|
|
清除所有设置的文件/字符串/二进制附件,返回无效. |
ClearCustomHeaders() |
|
|
清除所有设置的页头,返回无效. |
Send() |
|
|
发送邮件 |
SetLanguage($lang, $langpath) |
string $lang |
|
设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径 |
二、PHPMailer邮件发送
1.引入phpmailer类,并且实例化
2.邮件的设置
3.收件人,抄送,回复地址设置
4.开始正式写信
5.还可以AddAttachment()添加本地附件
6.最后使用send()函数正式发送
7.测试结果如下
发送邮件:
接着,163与qq邮箱依次收到邮件
邮件正文如下:
注意:关于邮件内容乱码问题
由于个人电脑上文本编辑器的编码格式不一样,有的人使用GB2312,gbk,UTF-8所以,所示在邮件正文出现乱码,只需要修改如下一行为相应的编码格式即可:
$phpmailer->CharSet = "UTF-8"; //设置字符集
乱码图片如下图所示:
附源码:
<?php /* 用PHPMailer类来发信 * 步骤: * 0: 引入 * 1: 实例化 * 2: 配置属性 * 3: 调用发送 * */ require('./PHPMailer_v5.1/class.phpmailer.php'); $phpmailer = new PHPMailer(); /*设置PHPMAILER发信用的方式 * 可以用win下的mail()来发送 * 可以用linux下sengmail ,gmail来发送 * 可以用smtp协议登录到某个账户上来发送 * */ $phpmailer->IsSMTP(); $phpmailer->Host = 'smtp.163.com'; //设置smtp服务器 $phpmailer->SMTPAuth = true; //SMTP服务器是否需要认证,要登录 $phpmailer->Port = 25; //smtp端口 $phpmailer->Username = "xxx"; //smtp服务器账号 [email protected] 中的xxx $phpmailer->Password = "xxxx"; //smtp服务器密码 //添加收件人 $phpmailer->AddAddress("[email protected]", "myself"); //添加一个抄送 $phpmailer->AddCC("[email protected]","lover雪儿"); //增加一个回复属性 $phpmailer->AddReplyTo("[email protected]","雪"); //信息设置完毕 //开始正式写信 $phpmailer->CharSet = "UTF-8"; //设置字符集 $phpmailer->From = "[email protected]"; //来自 $phpmailer->FromName = "lihaiyan1063385677"; //姓名 $phpmailer->Subject = "test from php mailer"; //主题 //开始正式写邮件内容 $phpmailer->Body = "this is the test mail for phpmailer!!!\n这是一封测试邮件"; //添加本地附件 $phpmailer->AddAttachment("./sanyecao.jpg","四叶草.jpg"); //发信 echo $phpmailer->send() ? "ok":"fail"; ?>