PHPMailer 是 PHP 開發中最廣泛使用的電子郵件發送庫,支援本地與遠端 SMTP 伺服器發信。本文將詳細說明如何使用 PHPMailer 透過遠端 SMTP 伺服器發送 HTML 郵件,並針對常見錯誤提供解決方案。
首先從官方來源下載 PHPMailer 類庫(建議使用 Composer 安裝:composer require phpmailer/phpmailer),或手動下載 class.phpmailer.php 並放入專案目錄。在需要發送郵件的腳本中引入:
<?php
require 'class.phpmailer.php'; // 或使用自動載入:require 'vendor/autoload.php';
try {
$mail = new PHPMailer(true); // true 表示啟用例外處理
// ... 後續設定
} catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exception $e) {
echo $e->getMessage();
}
?>
以下為關鍵設定項目,請根據您的郵件服務商資訊填寫:
smtp.gmail.com 或 mail.yourdomain.com。<?php
$mail->CharSet = 'UTF-8'; // 設定編碼防止中文亂碼
$mail->setFrom('sender@yourdomain.com', '寄件者名稱');
$mail->addReplyTo('reply@yourdomain.com', '回覆名稱');
$mail->addAddress('recipient@example.com', '收件者名稱'); // 可多次呼叫新增多位收件人
$mail->Subject = 'PHPMailer 測試郵件';
// HTML 郵件內容
$mail->isHTML(true);
$mail->Body = '<h1>您好!</h1><p>這是一封透過 PHPMailer 發送的 HTML 郵件。</p>';
$mail->AltBody = '這是純文字替代內容,供不支援 HTML 的郵件客戶端顯示。';
// 發送
$mail->send();
echo '郵件已成功發送!';
?>
$mail->IsSendmail() 必須註解或移除,否則會嘗試呼叫本地 sendmail 而非 SMTP。Host、Port、SMTPSecure 是否正確;確認伺服器防火牆允許對應埠號輸出。$mail->CharSet = 'UTF-8';,且檔案本身以 UTF-8 編碼儲存。$mail->addAttachment('/path/to/file.pdf');$mail->addEmbeddedImage('logo.png', 'logo_id');,HTML 中使用 <img src="cid:logo_id">。PHPMailer 實例,每次發送前呼叫 clearAddresses() 清空收件人。$mail->SMTPDebug = 2;(開發階段使用,正式環境請關閉)。更多 PHP 相關技巧請參考本站專題:《PHP XML 操作技巧總結》、《PHP 日期時間用法總結》、《PHP 面向對象程式設計入門》等。希望本文能協助您順利整合 PHPMailer 發送郵件功能。