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

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

文件名處理

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

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

解決之道

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

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

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

相關文章
相關標籤/搜索