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

PHP 發送電子郵件完全指南:從 mail() 到 SMTP 深度解析

     編輯:PHP 相關知識

前言:看似簡單實則坑多

mail() 函式雖然只有幾個參數,但背後依賴可用的 SMTP 伺服器,配置不當是導致郵件發送失敗的主因。

SMTP 基礎概念

SMTP(Simple Mail Transfer Protocol)是郵件傳輸協定。非 Windows 系統常用 Sendmail、Qmail;Windows 內建 SMTP 服務(NT Service Pack / Windows 2000)。若本機無 SMTP 服務,可使用 ISP 提供的外發郵件伺服器(如 mail.earthlink.net)。

php.ini 關鍵設定

Linux/Unix 環境

sendmail_path = /usr/sbin/sendmail -t -fyou@yourdomain.com

-t 從郵件標頭解析收件者,-f 指定寄件者(Return-Path)。

Windows 環境

SMTP = mail.yourisp.com
sendmail_from = you@yourdomain.com

修改後必須重啟 Web 伺服器,並用 phpinfo() 驗證生效。

常見問題排查

  • 無法連線 SMTP:檢查防火牆、SMTP 服務是否啟動、主機名/IP 是否正確。
  • 郵件被標記垃圾郵件:設定正確的 From、Return-Path、SPF/DKIM 記錄。
  • 中文亂碼:使用 mb_send_mail() 或自行構建 MIME 編碼郵件(見後續文章)。
  • 大量發送效能:考慮使用郵件佇列、非同步發送、第三方 API(SendGrid、Mailgun)。

進階:HTML 與純文字 multipart/alternative 郵件

需自行構建 MIME 標頭與分隔符,包含 text/plain 與 text/html 兩個部分,讓郵件用戶端自動選擇顯示模式。

結語

掌握 SMTP 原理與 php.ini 設定,是 PHP 發送郵件穩定運作的基石。生產環境建議封裝成可複用的郵件類別,支援附件、HTML、佇列重試等企業級功能。

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