20150322 利用phpmailer來發送郵件

20150322 利用phpmailer來發送郵件php

2015-03-22 Lover雪兒 html

    最近事務繁雜,致使php學習落下了一段時間,記得很久之前學了在doc命令窗口利用smtp來發送郵件,http://www.cnblogs.com/lihaiyan/p/4319853.html ,此處,咱們來利用一個強大的PHP類phpmailer來實現郵件的發送。 linux

 

1、關於PHPMailer 服務器

    phpMailer是一個很是強大的php發送郵件類,能夠設定發送郵件地址、回覆地址、郵件主題、富文本內容,上傳附件,而且使用起來很是方便 app

對於相關的知識,昆明多彩科技寫的很好http://www.kmwzjs.co以下所示 dom

使用前須要一個初始化對象如:$mail = new PHPMailer(); 編輯器

1.phpmailer屬性表ide

屬性 (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

  

設置錯誤提示語言,默認是英語,第一參數是語言,第二個參數是語言文件路徑

 

 

2、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!!!\n這是一封測試郵件";    

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

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

?>
相關文章
相關標籤/搜索