搜尋
首頁web前端前端問答如何解決html郵件亂碼問題

html郵件亂碼的解決方法:1、在mail函數前一行列印message內容;2、將郵件內容儲存為html檔案後檢視;3、設定UTF-8編碼。

如何解決html郵件亂碼問題

本文操作環境: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郵件亂碼問題

 

#

以上是如何解決html郵件亂碼問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
HTML超文本标记语言--超在那里?(文档分析)HTML超文本标记语言--超在那里?(文档分析)Aug 02, 2022 pm 06:04 PM

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

html和css算编程语言吗html和css算编程语言吗Sep 21, 2022 pm 04:09 PM

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

web前端笔试题库之HTML篇web前端笔试题库之HTML篇Apr 21, 2022 am 11:56 AM

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

HTML5中画布标签是什么HTML5中画布标签是什么May 18, 2022 pm 04:55 PM

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

总结HTML中a标签的使用方法及跳转方式总结HTML中a标签的使用方法及跳转方式Aug 05, 2022 am 09:18 AM

本文给大家总结介绍a标签使用方法和跳转方式,希望对大家有所帮助!

html5废弃了哪个列表标签html5废弃了哪个列表标签Jun 01, 2022 pm 06:32 PM

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

html中document是什么html中document是什么Jun 17, 2022 pm 04:18 PM

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

html5支持boolean值属性吗html5支持boolean值属性吗Apr 22, 2022 pm 04:56 PM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Mac版

SublimeText3 Mac版

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

SublimeText3 英文版

SublimeText3 英文版

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

DVWA

DVWA

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