引言
今天在發送郵件的時候,發現 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());編碼,就可以避免中文亂碼了,