mail() 函式雖然只有幾個參數,但背後依賴可用的 SMTP 伺服器,配置不當是導致郵件發送失敗的主因。
SMTP(Simple Mail Transfer Protocol)是郵件傳輸協定。非 Windows 系統常用 Sendmail、Qmail;Windows 內建 SMTP 服務(NT Service Pack / Windows 2000)。若本機無 SMTP 服務,可使用 ISP 提供的外發郵件伺服器(如 mail.earthlink.net)。
sendmail_path = /usr/sbin/sendmail -t -fyou@yourdomain.com
-t 從郵件標頭解析收件者,-f 指定寄件者(Return-Path)。
SMTP = mail.yourisp.com
sendmail_from = you@yourdomain.com
修改後必須重啟 Web 伺服器,並用 phpinfo() 驗證生效。
From、Return-Path、SPF/DKIM 記錄。mb_send_mail() 或自行構建 MIME 編碼郵件(見後續文章)。需自行構建 MIME 標頭與分隔符,包含 text/plain 與 text/html 兩個部分,讓郵件用戶端自動選擇顯示模式。
掌握 SMTP 原理與 php.ini 設定,是 PHP 發送郵件穩定運作的基石。生產環境建議封裝成可複用的郵件類別,支援附件、HTML、佇列重試等企業級功能。