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

PHPMailer 發送郵件完整教學:163/QQ 郵箱 SMTP 配置實戰

     編輯:PHP 相關知識

PHPMailer 發送郵件完整教學:163/QQ 郵箱 SMTP 配置實戰

PHPMailer 是 PHP 最流行的郵件發送庫,支援 SMTP 驗證、SSL/TLS 加密、HTML 郵件、附件等功能。本文提供可直接落地的完整代碼範例,涵蓋 163 與 QQ 郵箱的授權碼獲取、核心配置參數說明與常見坑點排查。

一、前置準備:獲取 SMTP 授權碼

163 郵箱

  1. 登入 163 郵箱網頁版 → 設定 → 客戶端授權密碼 → 開啟「SMTP 服務」。
  2. 設定授權碼(非登入密碼),驗證手機後獲得 16 位授權碼。

QQ 郵箱

  1. 登入 QQ 郵箱 → 設定 → 賬號 → 開啟「SMTP 服務」與「IMAP/POP3 服務」。
  2. 透過手機驗證獲取「獨立密碼」(即授權碼)。

核心差異: QQ 郵箱必須啟用 SSL(端口 465 或 587),163 郵箱預設使用非加密端口 25(亦支援 SSL 465/587)。

二、核心代碼範例(以 163 郵箱為例)

// 引入 PHPMailer 核心檔案(建議使用 Composer 自動載入)
require_once "PHPMailer/PHPMailerAutoload.php"; // 或分別 include class.phpmailer.php、class.smtp.php

$mail = new PHPMailer();

// 基礎 SMTP 設定
$mail->isSMTP();                    // 使用 SMTP
$mail->SMTPAuth = true;             // 啟用 SMTP 驗證
$mail->Host = 'smtp.163.com';       // SMTP 伺服器
$mail->Port = 25;                   // 非加密端口(SSL 請用 465/587)
// $mail->SMTPSecure = 'ssl';       // 163 非必須;QQ 必須開啟
$mail->CharSet = 'UTF-8';           // 郵件編碼

// 發件人資訊
$mail->From = 'your_account@163.com';       // 完整郵箱地址
$mail->FromName = '發件人姓名';              // 顯示名稱
$mail->Username = 'your_account@163.com';   // SMTP 登入帳號(完整郵箱)
$mail->Password = '你的授權碼';              // SMTP 登入密碼(授權碼)

// 郵件內容
$mail->isHTML(true);                // HTML 格式
$mail->Subject = '測試郵件主題';
$mail->Body    = '這是測試郵件內容,驗證碼:' . $token;
$mail->AltBody = '純文字備用內容';     // 非 HTML 郵件客戶端顯示

// 收件人(可多次呼叫添加多個)
$mail->addAddress('recipient@example.com', '收件人姓名');

// 附件(可選)
// $mail->addAttachment('/path/to/file.pdf', 'rename.pdf');

// 發送與結果處理
if ($mail->send()) {
    echo '發送成功';
} else {
    echo '發送失敗:' . $mail->ErrorInfo;
}

// 開發環境建議開啟除錯:$mail->SMTPDebug = 2; // 2 = 顯示完整 SMTP 交互

三、QQ 郵箱專用配置差異

$mail->Host = 'smtp.qq.com';
$mail->SMTPSecure = 'ssl';   // 必須
$mail->Port = 465;           // SSL 端口
$mail->Username = '123456@qq.com'; // QQ 號碼@qq.com
$mail->Password = 'qq授權碼';      // 獨立密碼

四、PHPMailer 精簡部署

從 GitHub 下載後,僅需保留以下核心檔案即可部署:

  • src/PHPMailer.php
  • src/SMTP.php
  • src/Exception.php
  • language/phpmailer.lang-zh_cn.php(中文錯誤訊息,可選)

建議使用 Composer 安裝:composer require phpmailer/phpmailer,自動處理依賴與自動載入。

五、常見問題排查清單

現象可能原因解決方向
SMTP connect() failed端口/加密方式錯誤、防火牆攔截、伺服器不支援 SSL檢查 Host/Port/SMTPSecure;telnet 測試端口連通性;確認 OpenSSL 擴充已啟用
Authentication failed帳號/授權碼錯誤、未開啟 SMTP 服務重新獲取授權碼;郵箱設定確認 SMTP 已開啟
郵件進垃圾桶SPF/DKIM/DMARC 未配置、內容觸發反垃圾規則域名配置 SPF/DKIM;避免敏感詞;使用可信發信 IP
中文亂碼CharSet 未設為 UTF-8、資料庫/檔案編碼不一致統一專案編碼為 UTF-8;$mail->CharSet = 'UTF-8'

六、進階應用場景

  • 批量發送: 迴圈中重複呼叫 addAddress 並 clearAddresses(),或使用郵件佇列(如 RabbitMQ + Worker)異步處理。
  • 模板郵件: 搭配 Twig/Blade 引擎渲染 HTML 模板,注入動態資料。
  • 異步發送: 將郵件任務推入 Redis/RabbitMQ,由 CLI Worker 消費,避免阻塞 HTTP 請求。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved