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为邮件内容主题,格式形如"<p>".$title."</p>".$message.$table."";
收到郵件正文部分隨機出現亂碼,非特殊字符,位置隨機,發送郵件到mac和windows收到郵件亂碼不一樣。
- windows:隨機位置出現?或!
- Mac: 資料位置與傳入不一致,例如,當xxxxAxxxxBxxxxx,收到的郵件為xxxxBxxxxAxxxx
傳入資料不一樣時,有時會出現亂碼,有時不會出現,對比與特殊字元也無關。
windows 亂碼形如:
排查:
1.確認是否拼裝錯誤
#直接在mail函數前一行列印message內容,完整html格式,儲存為html檔案後開啟。無亂碼,與預期所需吻合。
2. 確認收到郵件內容
outlook查看郵件來源檔案(Mac可直接右鍵,windows無此功能,後是儲存為html檔案後查看),發現亂碼處格式與步驟一中不一致。例如,標籤出現
3. 其他
其實到這一步就一直在懷疑php 的mail函數裡究竟做了什麼,是不是隱藏的PHP底層bug,傳輸過程改變了什麼。卻沒有找到對應原始碼查看,此處徘徊很久。
又因為是中文亂碼,一再確認設定了UTF-8,搜尋很多結果也是關於這個
另外mac上位置的錯亂有考慮到是否是傳輸截斷有問題,是不是長度太長導致
轉機:https://www.cnblogs.com/puzbus/archive/2013/06/07/3356342.html
##總結出來兩點
- 郵件內容過長會導致解析問題
- 解決:Content-Transfer-Encoding: base64
複盤補充:
問題一:郵件的長度限制依據是什麼,長郵件該如何處理
php mail方法的文檔裡有註明上限(印像中超過長度會是截斷等處理,所以出現亂碼也沒想到是長度問題)
而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個位元組
2. 這和換行有什麼關係呢?根據RFC822規定,BASE64Encoder編碼每76個字符,還需要加上一個回車換行
問題三:Content-Transfer-Encoding 取不同值代表什麼?
參考:MIME筆記與 https://www.w3.org/Protocols/rfc1341/5_Content-Transfer-Encoding.html
##個人理解,除了base64以外的方式都沒有插入換行的效果,也就無法解決問題
補充1:text類別需要補充charset
#
以上是如何解決html郵件亂碼問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章带大家了解一下HTML(超文本标记语言),介绍一下HTML的本质,HTML文档的结构、HTML文档的基本标签和图像标签、列表、表格标签、媒体元素、表单,希望对大家有所帮助!

不算。html是一种用来告知浏览器如何组织页面的标记语言,而CSS是一种用来表现HTML或XML等文件样式的样式设计语言;html和css不具备很强的逻辑性和流程控制功能,缺乏灵活性,且html和css不能按照人类的设计对一件工作进行重复的循环,直至得到让人类满意的答案。

总结了一些web前端面试(笔试)题分享给大家,本篇文章就先给大家分享HTML部分的笔试题(附答案),大家可以自己做做,看看能答对几个!

HTML5中画布标签是“<canvas>”。canvas标签用于图形的绘制,它只是一个矩形的图形容器,绘制图形必须通过脚本(通常是JavaScript)来完成;开发者可利用多种js方法来在canvas中绘制路径、盒、圆、字符以及添加图像等。

html5废弃了dir列表标签。dir标签被用来定义目录列表,一般和li标签配合使用,在dir标签对中通过li标签来设置列表项,语法“<dir><li>列表项值</li>...</dir>”。HTML5已经不支持dir,可使用ul标签取代。

在html中,document是文档对象的意思,代表浏览器窗口的文档;document对象是window对象的子对象,所以可通过“window.document”属性对其进行访问,每个载入浏览器的HTML文档都会成为Document对象。

html5支持boolean值属性;boolean值属性指是属性值为true或者false的属性,如input元素中的disabled属性,不使用该属性表示值为flase,不禁用元素,使用该属性可以不设置属性值表示值为true,禁用元素。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3漢化版
中文版,非常好用

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中