中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 在php中使用mail函數發送UTF-8編碼郵件時標題出現亂碼如何解決

在php中使用mail函數發送UTF-8編碼郵件時標題出現亂碼如何解決

發布時間:2021-03-04 14:47:38 來源:億速云 閱讀:159 作者:Leah 欄目:開發技術

在php中使用mail函數發送UTF-8編碼郵件時標題出現亂碼如何解決?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

php有什么用

php是一個嵌套的縮寫名稱,是英文超級文本預處理語言,它的語法混合了C、Java、Perl以及php自創新的語法,主要用來做網站開發,許多小型網站都用php開發,因為php是開源的,從而使得php經久不衰。

1.使用 PEAR 的 Mail 類

PEAR 的 Mail 類可以讓你選擇使用 sendmail 或者 SMTP 方式發信,這樣的包裝好的接口很好用,你沒有必要去自己重新發明輪子。

2.關于headers 中subject 的亂碼

不要把任何除了 iso-8859-1 編碼之外的文字直接放進subject,正確的方式是讓subject 里頭的文字符合RFC 2047 的規范,假設你的subject 處的文字的編碼是GB2312,那么正確的subject 應該是這樣的格式
$headers['subject'] = '=?GB2312?B?' . base64_encode('標題文字') . '?=';
如果是UTF-8 的話,把上面開頭的GB2312 替換成UTF-8 即可。推薦在標題處使用GB2312 編碼,因為MTA 的分化實在是嚴重,大部分的MSP使用的都是自己開發的 MTA,而相信國內的大部分 MTA 無論如何都是可以支持 GB2312 編碼的。

而如果是發送到國外的MSP,則推薦你在subject 處使用經過base64 編碼的 UTF-8 文字,因為他們很可能不支持 GB2312 編碼。

3.一定在headers 中添加content-type

電子郵件的 headers 中的 content-type 處類似網頁的,也是 text/plain; charset=gb2312 這樣的格式。這個選項主要對收郵件的客戶端有意義,可以避免在客戶端出現亂碼,部分的 Webmail 也會根據這里的設置對郵件的內容進行編碼轉換以正確顯示。你可以設想一下你用 gb2312 編碼發到 .com.tw 的郵箱時候的情況。

4.對你用來發送郵件的主機進行正確配置

1)一定配置反向解析,因為大部分的非固定 IP 都無法做反向解析,部分反垃圾郵件策略以此作為判斷依據。
2)一定配置 MX 解析,道理同上。
3)確保你的 return path 是能夠收到退信的,否則你的郵件發送服務器可能會進入接收端的黑名單。

$subject = stripslashes($the_post['Title']); 
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/plain; charset=utf-8\r\n"; 
$headers .= "Content-Transfer-Encoding: 8bit\r\n"; 
$message = stripslashes(strip_tags($the_post['Content'])); 
mail($to, $subject, $message, $headers);

先用函數base64_encode() — 使用MIME base64 對數據進行編碼
標題字符串前加編碼類型例如: =?UTF-8?B?
標題字符串后加:?=
例如:

<?php  
 $to = "clairelume@qq.com"; //將此電子郵件地址改為自己的。  
 $name = $_POST['name'];  
 $email = $_POST['email'];  
 $subject = "來自博客讀者的郵件";  
 $subject = "=?UTF-8?B?".base64_encode($subject)."?=";  
 $headers = "MIME-Version: 1.0\r\n";  
 $headers .= "Content-type: text/plain; charset=utf-8\r\n";  
 $headers .= "Content-Transfer-Encoding: 8bit\r\n";  
 $message = $_POST['message'];  
 mail($to,$subject,$message,"From: ".$email."",$headers);  
 echo 'OK '.$name.', 您的郵件已發送。';  
?>

關于在php中使用mail函數發送UTF-8編碼郵件時標題出現亂碼如何解決問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汾阳市| 大港区| 安岳县| 常州市| 赣榆县| 手游| 镇安县| 栾川县| 剑阁县| 上虞市| 吴堡县| 赣榆县| 水富县| 南阳市| 囊谦县| 嵊州市| 札达县| 阳曲县| 三明市| 山阳县| 盐山县| 四子王旗| 韶山市| 赤水市| 岑溪市| 九龙县| 长寿区| 得荣县| 确山县| 汨罗市| 梁山县| 明溪县| 延庆县| 游戏| 永仁县| 定陶县| 贡山| 金堂县| 忻城县| 武义县| 温泉县|