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

PHP Mail 函數與郵件發送完整指南

     編輯:PHP 入門

PHP Mail 函數與郵件發送完整指南


簡介

mail() 函數允許您直接從 PHP 腳本發送電子郵件。它需要伺服器已安裝並正在運行郵件系統(如 sendmail、Postfix、Exim 或 Windows SMTP 服務),具體行為由 php.ini 設定決定。


執行期設定 (php.ini)

指令預設值說明可變範圍
SMTPlocalhostWindows 專用:SMTP 伺服器 DNS 或 IPPHP_INI_ALL
smtp_port25Windows 專用:SMTP 連接埠 (PHP 4.3+)PHP_INI_ALL
sendmail_fromNULLWindows 專用:預設寄件者地址PHP_INI_ALL
sendmail_pathNULLUnix 專用:sendmail 程式路徑 (通常 /usr/sbin/sendmail)PHP_INI_SYSTEM

核心函數

函數說明PHP 版本
mail()從腳本直接發送電子郵件3
ezmlm_hash()計算 EZMLM 郵件列表系統所需的雜湊值3

基本用法範例

<?php
$to = 'recipient@example.com';
$subject = '測試郵件';
$message = '這是一封由 PHP 發送的測試郵件。';
$headers = "From: sender@example.com\r\n";
$headers .= "Reply-To: sender@example.com\r\n";
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";

if (mail($to, $subject, $message, $headers)) {
    echo '郵件發送成功';
} else {
    echo '郵件發送失敗';
}
?>

進階建議

  • 生產環境建議使用成熟的函式庫(如 PHPMailer、Symfony Mailer)支援 SMTP 驗證、SSL/TLS、附件、HTML 郵件等。
  • 注意郵件標頭注入風險,務必過濾使用者輸入的標頭欄位。
  • 大量發送時應使用佇列機制,避免阻塞腳本或觸發反垃圾郵件機制。
  • 設定 SPF、DKIM、DMARC 紀錄提高送達率。

常見問題

  • Windows 本機測試失敗:需安裝 SMTP 服務或使用外部 SMTP 伺服器(如 Gmail SMTP)。
  • mail() 返回 true 但未收到信:檢查垃圾郵件資料夾、郵件伺服器日誌、反垃圾郵件設定。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved