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

PHPMailer 透過遠端 SMTP 伺服器發送郵件完整實作指南

     編輯:PHP 相關知識

PHPMailer 透過遠端 SMTP 伺服器發送郵件完整實作指南

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 設定詳解

以下為關鍵設定項目,請根據您的郵件服務商資訊填寫:

  • IsSMTP():指定使用 SMTP 協定發送。
  • SMTPAuth = true:啟用 SMTP 驗證(大多數遠端伺服器要求)。
  • Port:SMTP 連接埠,常見為 25、465 (SSL) 或 587 (TLS)。
  • Host:遠端 SMTP 伺服器位址,例如 smtp.gmail.com 或 mail.yourdomain.com。
  • Username / Password:郵箱帳號與密碼(或應用程式專用密碼)。
  • SMTPSecure:加密方式,'ssl' 或 'tls'(視伺服器要求而定)。

郵件內容與收件人設定

<?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 '郵件已成功發送!';
?>

常見錯誤與解決方案

  1. 「Could not execute: /var/qmail/bin/sendmail」:$mail->IsSendmail() 必須註解或移除,否則會嘗試呼叫本地 sendmail 而非 SMTP。
  2. 連線逾時 / 拒絕連線:檢查 Host、Port、SMTPSecure 是否正確;確認伺服器防火牆允許對應埠號輸出。
  3. 驗證失敗:確認帳號密碼正確;若使用 Gmail/Outlook 等雲端郵箱,需開啟「低安全性應用程式存取」或產生「應用程式密碼」。
  4. 中文亂碼:務必設定 $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 發送郵件功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved