解決java發郵件中文名太長亂碼問題

當我們使用commons-email包或者javaMail發送郵件帶有附件後,可能會出現較長的中文名亂碼的情況,之後我們採用網上大多數人說的MimeUtility.encodeText()對文件名進行處理,然鵝,並不能解決問題。

文件名處理

  • 如下設置附件名併發送郵件,經測試,在Mac電腦上自帶郵箱客戶端文件名正常,Mac端網友郵箱客戶端顯示未命名,手機網易郵箱客戶端附件名異常以.bin結尾,Outlook for Windows 上出現亂碼附件名。

    EmailAttachment attachment = new EmailAttachment();
    fileName = MimeUtility.encodeText(fileName);
    attachment.setName(fileName);

解決之道

  • 經過多方蒐集解決方案,此篇文章分析的較好,因爲該問題涉及了一個系統配置項mail.mime.splitlongparameters,這項配置爲true時,對於長文件名將採用這種模式處理附件名,並且很多客戶端對於這種模式的支持也不太好,將這個設置爲false後,發送附件名在上述出問題的客戶端下均顯示正常了。

    // 設置系統屬性
    System.setProperty("mail.mime.splitlongparameters", "false");
    
    EmailAttachment attachment = new EmailAttachment();
    fileName = MimeUtility.encodeText(fileName);
    attachment.setName(fileName);

diboot 簡單高效的輕代碼開發框架

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章