美文网首页diboot
解决java发邮件中文名太长乱码问题

解决java发邮件中文名太长乱码问题

作者: 一个鸡蛋壳儿 | 来源:发表于2019-07-20 09:42 被阅读0次

    当我们使用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 简单高效的轻代码开发框架

    相关文章

      网友评论

        本文标题:解决java发邮件中文名太长乱码问题

        本文链接:https://www.haomeiwen.com/subject/tnjylctx.html