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

PHP 發送電子郵件完整實作:編碼、MIME、HTML 郵件與附件

     編輯:PHP 相關知識

PHP mail() 函數進階應用指南

核心程式碼範例:UTF-8 HTML 郵件


"; $content .= "感謝您註冊會員!
"; $content .= "您可以享受以下服務:
"; $content .= "- 線上購物優惠
"; $content .= "- 專屬客服支援

"; $content .= "會員團隊
"; $content .= "{$date}
"; $content .= 'example.com'; // 發送 $result = mail($to, $subject, $content, $headers); if ($result) { echo "郵件發送成功!"; } else { echo "郵件發送失敗,請檢查郵件伺服器設定。"; } ?>

關鍵技術點解析

1. 主旨編碼:Base64 + MIME Encoded-Word

格式:=?charset?encoding?encoded-text?=

  • charset:字元集(UTF-8、Big5 等)
  • encoding:B = Base64,Q = Quoted-Printable
  • encoded-text:編碼後的文字

範例:=?UTF-8?B?5b2V54uZ5L2g5a6J?=

2. MIME 版本與內容類型

MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8

宣告郵件遵循 MIME 標準,支援多部分內容、非 ASCII 字元、附件等。

3. 常見 Content-Type 對照表

類型用途範例
text/plain純文字郵件一般通知信
text/htmlHTML 郵件行銷信、通訊
multipart/mixed混合內容(含附件)帶附件郵件
multipart/alternative替代內容(純文字+HTML)相容舊郵件客戶端
application/pdfPDF 附件報表、發票
image/jpegJPEG 圖片內嵌圖片
application/octet-stream任意二進位檔案通用附件

進階:發送帶附件的郵件(multipart/mixed)

您好,附件為本月報表\r\n";
$body .= "--{$boundary}\r\n";

// 附件部分
$filename = "report.pdf";
$filepath = "/var/www/files/report.pdf";
$filedata = chunk_split(base64_encode(file_get_contents($filepath)));

$body .= "Content-Type: application/pdf; name=\"{$filename}\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"{$filename}\"\r\n\r\n";
$body .= "{$filedata}\r\n";
$body .= "--{$boundary}--\r\n";

mail($to, $subject, $body, $headers);
?>

常見問題與最佳實務

  • 換行符:標頭必須用 \r\n(RFC 規範),單獨 \n 可能導致某些 MTA 拒收。
  • SPF/DKIM/DMARC:生產環境務必設定網域驗證,避免進垃圾信箱。
  • 大量發送:勿直接用 mail() 迴圈,建議使用隊列(如 RabbitMQ、Redis)+ 背景處理程序,或改用 SMTP 庫。
  • 測試工具:使用 Mailtrap、Postmark 測試環境驗證郵件格式。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved