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", "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 |
|
設置錯誤提示語言,默認是英語,第一參數是語言,第二個參數是語言文件路徑 |
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"; ?>