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

本文介绍如何解决使用commons-email或javaMail发送带长中文名附件时出现的乱码问题。通过调整系统配置项mail.mime.splitlongparameters的值,确保在不同客户端上正确显示附件名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值