PHPMailer 是 PHP 發送郵件的經典解決方案,支援 SMTP 認證、HTML 郵件、附件、嵌入圖片等豐富功能。本文整理了 v5.1 版本中核心類別 PHPMailer 與 SMTP 的常用屬性與方法,供開發者快速查閱。
iso-8859-1,中文環境建議設為 UTF-8。8bit、7bit、binary、base64、quoted-printable。text/plain。smtp.example.com:25,可指定多台備援。ssl 或 tls(v5.1 需手動設定)。SmtpClose() 關閉。AddAddress($address, $name = '') // 新增收件人
AddCC($address, $name = '') // 新增副本(CC)
AddBCC($address, $name = '') // 新增密件副本(BCC,僅 Win32 SMTP 支援)
ClearAddresses() // 清除所有收件人
ClearCCs() / ClearBCCs() // 清除 CC/BCC
ClearAllRecipients() // 清除全部收件人含 CC/BCC
AddAttachment($path, $name='', $encoding='base64', $type='application/octet-stream')
AddStringAttachment($string, $filename, $encoding='base64', $type='application/octet-stream')
AddEmbeddedImage($path, $cid, $name='', $encoding='base64', $type='application/octet-stream')
ClearAttachments() // 清除所有附件
嵌入圖片範例:
$mail->AddEmbeddedImage('/path/logo.png', 'logo_cid', 'logo.png');
// HTML 內容中引用:<img src="cid:logo_cid">
AddReplyTo($address, $name='') // 設定 Reply-To
AddCustomHeader($header) // 新增自訂標頭
ClearReplyTos() / ClearCustomHeaders() // 清除
IsSMTP() // 使用 SMTP(推薦)
IsMail() // 使用 PHP mail()
IsSendmail() // 使用 sendmail 程式
IsQmail() // 使用 qmail
Send() // 建立並發送郵件,失敗回傳 false
SetLanguage($lang, $path) // 設定錯誤訊息語言(預設 english)
SmtpClose() // 關閉 SMTP 連線(長連線時必須呼叫)
IsError() // 檢查是否有錯誤
IsHTML($bool) // 設定是否為 HTML 格式
一般應用層較少直接呼叫,了解即可:
Connect()、Hello()、Authenticate()、Mail()、Recipient()、Data()、Quit()、Close()、Reset()、Verify()、Expand()、Noop()、Turn()、Send()、SendAndMail()、SendOrMail()$do_debug、$SMTP_PORT<?php
require 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = 'smtp.gmail.com:587';
$mail->SMTPAuth = true;
$mail->Username = 'your@gmail.com';
$mail->Password = 'your_password';
$mail->SMTPSecure = 'tls';
$mail->CharSet = 'UTF-8';
$mail->From = 'your@gmail.com';
$mail->FromName = '發件人名稱';
$mail->AddAddress('recipient@example.com', '收件人');
$mail->Subject = '測試郵件';
$mail->Body = '<h1>HTML 內容</h1>';
$mail->AltBody = '純文字備用內容';
if (!$mail->Send()) {
echo '發送失敗: ' . $mail->ErrorInfo;
} else {
echo '發送成功';
}
?>
$mail->CharSet = 'UTF-8';,且檔案儲存為無 BOM 的 UTF-8。$mail->SMTPDebug = 2; 觀察詳細回應。$mail->SMTPKeepAlive = true; 並循環發送,最後呼叫 SmtpClose()。