91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

html郵件亂碼怎么辦

發布時間:2021-06-03 14:46:46 來源:億速云 閱讀:464 作者:小新 欄目:web開發

這篇文章主要介紹了html郵件亂碼怎么辦,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

html郵件亂碼的解決辦法:1、在mail函數前一行打印message內容;2、將郵件內容保存為html文件后查看;3、設置UTF-8編碼。

本文操作環境:windows7系統、HTML5版、Dell G3電腦。

如何解決html郵件亂碼問題?mail 郵件內容出現隨機亂碼

問題描述:

將數據(含中文)拼裝為html文件格式,發送郵件到指定用戶。

利用PHP中的mail函數

//拼裝header。指定編碼utf-8,解析郵件正文中的中文$headers = "From: xxx@xxx\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=utf-8\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";//拼裝標題  解決中文標題亂碼問題$subject = xxx;
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";

mail($toEmail,$subject,$message,$headers);   // 其中$message為郵件內容主題,格式形如"<html><head></head><body><p>".$title."</p>".$message.$table."</body></html>";

收到郵件正文部分隨機出現亂碼,非特殊字符,位置隨機,發送郵件到mac和windows收到郵件亂碼不一樣。

  • windows:隨機位置出現? 或!

  • Mac: 數據位置與傳入不一致,比如,應為 xxxxAxxxxBxxxxx,收到的郵件為 xxxxBxxxxAxxxx

傳入數據不一樣時,有時會出現亂碼,有時不會出現,對比與特殊字符也無關。

windows 亂碼形如:html郵件亂碼怎么辦

排查:

1. 確認是否拼裝錯誤

直接在mail函數前一行打印message內容,完整html格式,保存為html文件后打開。無亂碼,與預期所需吻合。

2. 確認收到郵件內容

outlook查看郵件源文件(Mac可直接右擊,windows無此功能,后是保存為html文件后查看),發現亂碼處格式與步驟一中不一致。比如,標簽出現 <!td>

3. 其他

其實到這一步就一直在懷疑php 的mail函數里究竟做了什么,是不是隱藏的PHP底層bug,傳輸過程改動了什么。卻沒有找到對應源碼查看,此處徘徊很久。

又因為是中文亂碼,一再確認設置了UTF-8,搜索很多結果也是關于這個

另外mac上位置的錯亂有考慮到是否是傳輸截斷有問題,是不是長度太長導致

總結出來兩點

  • 郵件內容過長會導致解析問題

  • 解決:Content-Transfer-Encoding: base64

復盤補充:

問題一:郵件的長度限制依據是什么,長郵件該如何處理

php mail 方法的文檔里有注明上限(印象中超過長度會是截斷等處理,所以出現亂碼也沒想到是長度問題)

html郵件亂碼怎么辦

而php 基本方法設置上限的依據則是RFC 2822 2.1.1。

html郵件亂碼怎么辦

同時,它也提供了處理的建議,就是將文本內容拆成多行。拼裝的html結構則是一行,顯然是超過了長度。

問題二:為什么base64就可以解決郵件單行過長的問題

1. 理解base64是什么,參考了base64筆記 http://www.ruanyifeng.com/blog/2008/06/base64.html,簡單來說base64中的3個字節代表ASCII中的4個字節

html郵件亂碼怎么辦

2. 這和換行有什么關系呢?根據RFC822規定,BASE64Encoder編碼每76個字符,還需要加上一個回車換行

問題三:Content-Transfer-Encoding 取不同值代表什么?

參考:MIME筆記和 https://www.w3.org/Protocols/rfc1341/5_Content-Transfer-Encoding.html

html郵件亂碼怎么辦

html郵件亂碼怎么辦

個人理解,除了base64以外的方式都沒有插入換行的效果,也就無法解決問題

補充1:text類需要補充charset

html郵件亂碼怎么辦

補充2: "=?【編碼】?B?".base64_encode($subject)."?=";  B代表 base64 Q代表quoted-printable

感謝你能夠認真閱讀完這篇文章,希望小編分享的“html郵件亂碼怎么辦”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

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

AI

旺苍县| 乾安县| 峡江县| 石棉县| 庄河市| 武城县| 盐城市| 郎溪县| 上栗县| 遂平县| 翼城县| 吉木乃县| 盐城市| 九江县| 富锦市| 仁布县| 南阳市| 罗城| 寿光市| 手机| 福鼎市| 织金县| 铁岭市| 麟游县| 富平县| 营口市| 资兴市| 扬中市| 克拉玛依市| 历史| 类乌齐县| 开江县| 胶州市| 紫阳县| 大方县| 台湾省| 南丰县| 庄河市| 晴隆县| 锡林浩特市| 友谊县|