qq郵件裏帶^M的文本會被轉義

原由:

經過接口拿到一個帶有 \r 字符的文本,而後經過賦值到ejs的文本里,再經過fs.readFileSync讀出來,調用nodemailer發送到QQ郵箱,而後在郵件裏看到了帶=E5, = , =E9諸如此類的特殊字符。html

通過:

  1. 打印出fs.readFileSync,再fs.writeFileSync到本地文件,看到了^M
  2. 一開始覺得是接口亂碼致使了,拼命的改編碼,用了iconv的類庫。結果【x】
  3. 觀察到在linux的控制檯輸出是正常的,就想着先存一份到本地,再讀本地的文件。結果【x】
  4. 觀察到打印的接口輸出裏一直包含着\r字符,嘗試用replace方法移除。結果【✔】

文本展現

  • 在qq郵件裏的展現效果

再見,布諾太太,我得走了,我女兒明天結婚,我今天還有好多好多工做要作。 =E5 ,那小夥子還在抵抗?node

  • 在本地文件的展現效果

再見,布諾太太,我得走了,我女兒明天結婚,我今天還有好多好多工做。^M嗯,那小夥子還在抵抗?linux

  • 在接口裏的展現效果

再見,布諾太太,我得走了,我女兒明天結婚,我今天還有好多好多工做。\r嗯,那小夥子還在抵抗?vim

實現代碼

html.replace(/[\r]/g, "");

感想

  1. 慣性思考,一有問題就找百度,百度後都是一堆的dos2unix轉,以及vim下的%s/^M$//g
  2. 期間也直接就是拿來主義, readFileSyncreadFile`函數沒查清楚,就直接套
  3. 測試不全面,使用sparkqq郵箱,在spark上沒這個問題,在qq郵箱有
相關文章
相關標籤/搜索