20150322 利用phpmailer来发送邮件

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

发送邮件的方法: ("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
string $value

  

为用户能够创建自己的自定义伪属性.
例子:
$mail->set('X-MSMail-Priority', 'Normal');

addCustomHeader($value)

string $value

  

创建自定义页头 . 
例子:
$mail->addCustomHeader("X-Priority: 3");

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
string $name

  

增加一个邮件发件人地址.

AddAddress($address, $name = "")

string $address
string $name

  

增加一个收件人地址(邮件目的地址).

AddCC($address, $name = "")

string $address
string $name

  

增加一个抄送地址. 注意:此功能需要smtp服务器搭建在win32平台.

AddBCC($address, $name = "")

string $address
string $name

  

增加一个密送地址. 注意:此功能需要smtp服务器搭建在win32平台.

AddReplyTo($address, $name = "")

string $address
string $name

  

增加一个回复地址(别人回复时的地址).

Send()

  

  

创建信息和发送邮件,如果发送不成功则返回false,使用ErrorInfo属性可以显示错误描述,发送成功返回true.

AddAttachment($path, $name = "", $encoding = "base64",
    $type = "application/octet-stream")

string $path
string $name
string $encoding
string $type

  

添加从本地一个附件.如果找不到该附件就返回false.参数分别是:本地路径,编码,文件类型

AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64",
    $type = "application/octet-stream")

string $path
string $cid
string $name
string $encoding
string $type

  

增加一个嵌入式附件,包括图像,声音等其他几乎任何文件,一定要设置$type属性,如果是jpeg就使用"image/jpeg",gif则是"image/gif",具体对应的请自行参照相关文件.如果使用MsgHTML()就没用必要使用这个方法.

ClearAddresses()

  

  

清除所有收件人地址,返回无效.

ClearCCs()

  

  

清除所有抄送地址,返回无效.

ClearBCCs()

  

  

清除所有密送地址,返回无效.

ClearReplyTos()

  

  

清除所有回复地址,返回无效.

ClearAllRecipients()

  

  

清除所有收件人/草送/密送地址,返回无效.

ClearAttachments()

  

  

清除所有设置的文件/字符串/二进制附件,返回无效.

ClearCustomHeaders()

  

  

清除所有设置的页头,返回无效.

Send()

  

  

发送邮件

SetLanguage($lang, $langpath)

string $lang
string $langpath

  

设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径

方法 (v5.0.0)

类型

默认

描述

set($name, $value)

string $name
string $value

  

为用户能够创建自己的自定义伪属性.
例子:
$mail->set('X-MSMail-Priority', 'Normal');

addCustomHeader($value)

string $value

  

创建自定义页头 . 
例子:
$mail->addCustomHeader("X-Priority: 3");

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
string $name

  

增加一个邮件发件人地址.

AddAddress($address, $name = "")

string $address
string $name

  

增加一个收件人地址(邮件目的地址).

AddCC($address, $name = "")

string $address
string $name

  

增加一个抄送地址. 注意:此功能需要smtp服务器搭建在win32平台.

AddBCC($address, $name = "")

string $address
string $name

  

增加一个密送地址. 注意:此功能需要smtp服务器搭建在win32平台.

AddReplyTo($address, $name = "")

string $address
string $name

  

增加一个回复地址(别人回复时的地址).

Send()

  

  

创建信息和发送邮件,如果发送不成功则返回false,使用ErrorInfo属性可以显示错误描述,发送成功返回true.

AddAttachment($path, $name = "", $encoding = "base64",$type=

"application/octet-stream")

string $path
string $name
string $encoding
string $type

  

添加从本地一个附件.如果找不到该附件就返回false.参数分别是:本地路径,编码,文件类型

AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64",
    $type = "application/octet-stream")

string $path
string $cid
string $name
string $encoding
string $type

  

增加一个嵌入式附件,包括图像,声音等其他几乎任何文件,一定要设置$type属性,如果是jpeg就使用"image/jpeg",gif则是"image/gif",具体对应的请自行参照相关文件.如果使用MsgHTML()就没用必要使用这个方法.

ClearAddresses()

  

  

清除所有收件人地址,返回无效.

ClearCCs()

  

  

清除所有抄送地址,返回无效.

ClearBCCs()

  

  

清除所有密送地址,返回无效.

ClearReplyTos()

  

  

清除所有回复地址,返回无效.

ClearAllRecipients()

  

  

清除所有收件人/草送/密送地址,返回无效.

ClearAttachments()

  

  

清除所有设置的文件/字符串/二进制附件,返回无效.

ClearCustomHeaders()

  

  

清除所有设置的页头,返回无效.

Send()

  

  

发送邮件

SetLanguage($lang, $langpath)

string $lang
string $langpath

  

设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径

ClearAttachments()

  

  

清除所有设置的文件/字符串/二进制附件,返回无效.

ClearCustomHeaders()

  

  

清除所有设置的页头,返回无效.

Send()

  

  

发送邮件

SetLanguage($lang, $langpath)

string $lang
string $langpath

  

设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径

ClearAttachments()

  

  

清除所有设置的文件/字符串/二进制附件,返回无效.

ClearCustomHeaders()

  

  

清除所有设置的页头,返回无效.

Send()

  

  

发送邮件

SetLanguage($lang, $langpath)

string $lang
string $langpath

  

设置错误提示语言,默认是英语,第一参数是语言,第二个参数是语言文件路径

 

 

二、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服务器账号  xxx@163.com  中的xxx
$phpmailer->Password = "xxxx";          //smtp服务器密码

//添加收件人
$phpmailer->AddAddress("lihaiyan1063385677@163.com", "myself");
//添加一个抄送
$phpmailer->AddCC("1063385677@qq.com","lover雪儿");
//增加一个回复属性
$phpmailer->AddReplyTo("1063385677@qq.com","雪");

//信息设置完毕
//开始正式写信
$phpmailer->CharSet = "UTF-8";        //设置字符集
$phpmailer->From = "lihaiyan1063385677@163.com";    //来自
$phpmailer->FromName = "lihaiyan1063385677";        //姓名
$phpmailer->Subject = "test from php mailer";    //主题
//开始正式写邮件内容
$phpmailer->Body = "this is the test mail for phpmailer!!!
这是一封测试邮件";    

//添加本地附件
$phpmailer->AddAttachment("./sanyecao.jpg","四叶草.jpg");

//发信
echo $phpmailer->send() ? "ok":"fail";

?>
原文地址:https://www.cnblogs.com/lihaiyan/p/4356704.html