Skip to content

Instantly share code, notes, and snippets.

@WenLiangTseng
Created July 22, 2013 05:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save WenLiangTseng/6051451 to your computer and use it in GitHub Desktop.
Save WenLiangTseng/6051451 to your computer and use it in GitHub Desktop.
PHP寄送郵件的寫法
<?php
/*使用PHP mail()寄送UTF-8編碼之電子郵件
常遇到的問題是,「郵件標題」或「寄件者」是亂碼的問題
主要的原因在於,電子郵件標準格式中,
表頭的部分不允許使用雙位元的文字,
所以,使用mb_encode_mimeheader()函式
將雙位元文字編碼為單位元字串。
*/
//範例:
mb_internal_encoding('UTF-8');
//$subject = mb_encode_mimeheader('訂單', 'UTF-8');
$subject = "訂單";
$subject = "=?UTF-8?B?" . base64_encode($subject) . "?=";
//用 base64 解決在某些主機上 mb_encode_mimeheader 寄不出去的問題,參考資料//http://www.macsoho.net/blog/?p=143
$message = $html; //HTML格式的信件內容
$headers = "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/html; charset=utf-8" . PHP_EOL;
$headers .=
"From: ".mb_encode_mimeheader('訂購網', 'UTF-8')." <xxxx@xxxx.xxx.xx>" . PHP_EOL;
mail($to,$subject,$message,$headers);
//因mb_encode_mimeheader()預設的字串編碼為西方ISO-8859-1,
//而此範例使用UTF-8編碼中文字,
//故程式中需使用mb_internal_encoding()將內部預設編碼改為UTF-8
//參考資料:
//最新PHP+MySQL+AJAX網頁程式設計(旗標出版)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment