首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHPMailer 核心類庫完整參考指南(v5.1 版)

     編輯:PHP 綜合知識

前言

PHPMailer 是 PHP 發送郵件的經典解決方案,支援 SMTP 認證、HTML 郵件、附件、嵌入圖片等豐富功能。本文整理了 v5.1 版本中核心類別 PHPMailer 與 SMTP 的常用屬性與方法,供開發者快速查閱。

一、PHPMailer 核心屬性

郵件內容與編碼

  • $Body:郵件主體內容,支援 HTML 或純文字格式。
  • $AltBody:當郵件客戶端不支援 HTML 時的替代顯示內容。
  • $CharSet:郵件編碼,預設 iso-8859-1,中文環境建議設為 UTF-8。
  • $Encoding:內容傳輸編碼,可選 8bit、7bit、binary、base64、quoted-printable。
  • $ContentType:MIME 類型,預設 text/plain。
  • $WordWrap:自動換行字元數,超過則換行。

寄件人與收件人設定

  • $From、$FromName:寄件人信箱與顯示名稱。
  • $Sender:Return-Path 地址,影響退信處理。
  • $ConfirmReadingTo:要求回執的信箱。

SMTP 連線參數

  • $Host:SMTP 主機,格式 smtp.example.com:25,可指定多台備援。
  • $Port:連接埠,預設 25。
  • $Helo、$Hostname:HELO 指令與 Message-ID 使用的主機名。
  • $SMTPAuth:是否啟用 SMTP 認證(需搭配 Username/Password)。
  • $Username、$Password:認證帳號密碼。
  • $SMTPSecure:加密協定 ssl 或 tls(v5.1 需手動設定)。
  • $Timeout:連線逾時秒數(Windows 下無效)。
  • $SMTPKeepAlive:保持長連線,需手動呼叫 SmtpClose() 關閉。
  • $SMTPDebug:除錯輸出等級(0 關閉,1 客戶端訊息,2 伺服器回應,3 詳細)。

郵件優先級與其他

  • $Priority:優先級 1(高)~5(低),預設 3。
  • $Version:類庫版本號。
  • $ErrorInfo:最近一次錯誤訊息。
  • $PluginDir:外掛目錄路徑(SMTP 類別不在同目錄時使用)。

二、PHPMailer 常用方法

收件人管理

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 格式

三、SMTP 類別底層方法(進階用途)

一般應用層較少直接呼叫,了解即可:

  • 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 '發送成功';
}
?>

五、常見問題提醒

  1. 中文亂碼:務必設定 $mail->CharSet = 'UTF-8';,且檔案儲存為無 BOM 的 UTF-8。
  2. 附件不顯示:確認路徑正確、檔案可讀、MIME 類型設定合理。
  3. SMTP 連線失敗:檢查防火牆、開啟 $mail->SMTPDebug = 2; 觀察詳細回應。
  4. 大量發送:啟用 $mail->SMTPKeepAlive = true; 並循環發送,最後呼叫 SmtpClose()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved