JavaMail 郵件傳送,有意思的附件名亂碼 → 使用者端正常,web端亂碼

2023-03-08 12:01:01

開心一刻

  昨晚,媳婦很感傷的看著我

  媳婦:以後歲數大了,我要走你前面去了,你再找個老伴

  我:我不想找

  媳婦:你找一個,不用替我守著,以後你說你頭疼發燒,也得有個給你端水遞藥的呀

  媳婦抹著眼淚:到老是個伴

  我:我想找個年輕的

  現在我左臉還有一個掌印,火辣辣的

  附件名是做了編碼處理的

  我們來看下接收情況

  Foxmail

  outlook windows 版本

  一切看似都很平靜

 

  直到她們的出現,讓我慌了神

  QQ郵箱(web 端)

  outlook web 版本

  此刻,我們的腦中應該有 2 個問題

  1、亂碼該如何修復

  2、為什麼使用者端版(Foxmail、outlook windows版)接收正常,而 web版 卻出現了亂碼?

亂碼處理

  這個上網一搜,很容易就能找到答案,加一個系統屬性即可

   outlook web

  有人可能會有疑問了:你說 60 就 60,你說拆分就拆分?

  注意第一個 if 中的條件,是有三個

    1、附件名編碼後的長度

    2、 mail.mime.splitlongparameters 

    3、 mail.mime.encodeparameters ,預設值是 true 

  當三個條件都為 true ,才會以 60 字元為單位進行多段拆分

   你好_好久不見_別來無恙_20230306.txt 編碼後再拆分得到的結果是

  檔名被拆分成了三段,我可曾欺你們?

為什麼只有 web 版「亂碼」

  此刻需要糾正下,web 版出現的附件名不是亂碼,而是編碼之後未能正確解碼

  為什麼未能正確解碼?

  那是因為不支援 RFC2231 style encoded parameters 

  其實可能不只是 web 版不支援,可能還有其他的郵件使用者端不支援,只是樓主未去嘗試而已

總結

  1、是要滿足三個條件才會對附件名進行多段拆分,忘記了的往上翻一翻

  2、為什麼要進行附件名的多段拆分? 呃呃呃...,由你們來回答