一、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 說明:設定每行最大字元數,超過改數後自動換行