• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

PHP 寄送 Email 標題使用 UTF-8 編碼顯示中文教學與範例

介紹如何在 PHP 中使用 UTF-8 編碼讓 Email 信件標題可以包含中文字,不需要 SMTPUTF8 支援。

UTF-8 Email 內容

如果要寄送含有 UTF-8 編碼的 Email,可以在郵件標頭中指定內容類型(Content-Type),例如 UTF-8 編碼的文字郵件就指定為:

Content-Type: text/plain; charset="UTF-8"

若為 UTF-8 編碼的 HTML 郵件則指定為:

Content-Type: text/html; charset="UTF-8"

這個 Content-Type 所指定的編碼僅適用於郵件內容(body),而郵件的標題(title)本身是一種郵件標頭(header),並不包含於郵件內容之中,因此就算在這樣宣告為 UTF-8 編碼的郵件之中,郵件標題還是只能包含 ASCII 字元。

UTF-8 Email 標題

RFC 1342 提供了一種編碼方式,可讓 UTF-8 編碼的文字經過編碼之後,放入郵件標題,其格式為:

=?charset?encoding?encoded-text?=

其中 charset 就是文字的原始編碼(例如 UTF-8),而 encoding 可以是 B(代表 Base64)或 Q(代表 Quoted-printable),而 encoded-text 就是編碼後的資料。

如果將 UTF-8 編碼的 中文 兩個字以 RFC 1342 的方式配合 Base64 編碼,結果就會像這樣:

=?UTF-8?B?5Lit5paH?=

PHP 寄送 UTF-8 郵件

若要在 PHP 中寄送 UTF-8 編碼的郵件,可以在郵件標頭指定 Content-Type 為 UTF-8,並使用 base64_encode 函數處理標題文字的編碼,以下是一個簡單的範例:

<?php

# 收件者
$to = 'example@example.com';

# 郵件標題
$subject = '中文標題';

# 郵件內容
$message = '中文內容';

# 郵件標頭
$headers = 'From: example@example.com' . "\r\n"
  . 'Content-Type: text/plain; charset="UTF-8"' . "\r\n";

# 寄送 UTF-8 編碼的郵件
mail($to, '=?UTF-8?B?' . base64_encode($subject) . '?=', $message, $headers)

?>

參考資料:ncona.com

分類:PHP

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • Linux 檢查、測試 CPU AES-NI 硬體加速加密指令集教學
  • CentOS Linux 7.9 自行編譯、安裝 OpenSSH 9.0p1 伺服器教學與範例
  • Python 使用 zipfile 模組壓縮、解壓縮 ZIP 檔案教學與範例
  • Python 以 LINE Notify 自動傳送即時訊息、圖片教學與範例
  • Linux 使用 Prometheus 與 Grafana 監控伺服器狀態、發送告警 Email 簡訊教學與範例
  • Linux 設定 pam_tty_audit 記錄 SSH 使用者操作指令教學與範例
  • Linux 封鎖、解鎖登入失敗次數過多的帳號 pam_faillock 教學與範例
  • Python 使用 pytube 自動下載 YouTube 影片教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide