發送 Email 腳本是網站最常見腳本之一,雖簡單但常令程式設計師挫折。PHP mail() 函數僅需收件地址與信件主體即可發送,但要讓其正常運作需解決棘手問題。
mail() 需 SMTP 伺服器讓 PHP 連線。SMTP (Simple Mail Transfer Protocol) 簡單郵件傳輸協定,SMTP 伺服器即運行此協定發送郵件的電腦。非 Windows 運行 Sendmail、Qmail 等程式;Windows 平台用 IIS SMTP 服務 (NT Service Pack 一部分或內建於 Windows 2000)。
若使用 ISP 虛擬主機,SMTP 服務通常已安裝。若為個人開發電腦可能未運行 SMTP 軟體。簡單判斷:Windows 用戶從未見過 "SMTP 伺服器" 字樣,即未運行。兩種選擇:安裝配置維護 SMTP 服務 (不推薦新手),或使用現有 SMTP 伺服器 (如 ISP 的外發郵件伺服器)。
用 phpinfo() 查看目前配置,關注三項:
SMTPsendmail_fromsendmail_path非 Windows:只需設定 sendmail_path,如 /usr/sbin/sendmail 或 /var/qmail/bin/sendmail,可加參數 -t -f you@yourdomain.com 設定 Return-Path。
Windows:需設定 SMTP 與 sendmail_from。SMTP 設為 localhost (自架) 或 ISP 伺服器 (如 mail.earthlink.net)。sendmail_from 設為 From 標頭郵件地址 (如 youraddress@yourdomain.com)。