java 發送郵件附件 文件名過長的坑

引言

今天在發送郵件的時候,發現  excel附件名稱亂套了,導致文件失效, 之前發送都是正常的,因爲是平臺封裝的發送郵件的工具類,所以一臉懵逼,別的項目好好的發送,今天突然出現錯誤。

      

 

經過多次嘗試發現,發送成功和失敗的區別在於文件名稱不同,於是我們把文件名稱修改的很短後發現竟然發送成功了,是不是很坑,然我回頭去看發送郵件的工具類,發現有個設置 沒有打開。

錯誤原因:

參數mail.mime.splitlongparameters 在linux下 會默認爲 true,附件名過長,就會被截斷

new MimeMessage、new MimeMultipart、new MimeBodyPart 之前(一個比較靠前的位置,如果在new MimeMultipart之後添加,有可能無效),添加如下紅色代碼。

System.getProperties().setProperty("mail.mime.splitlongparameters", "false");

就可以避免在linux下利用javamail1.4.4發郵件帶附件,附件名過長而被被截斷,導致接收端解析失敗的異常了

如果還出現中文亂碼的話,就在獲取到附件名的時候進行MimeUtility.encodeText(source.getName());編碼,就可以避免中文亂碼了,

發佈了364 篇原創文章 · 獲贊 389 · 訪問量 141萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章