java 发送邮件附件 文件名过长的坑

简介: java 发送邮件附件 文件名过长的坑

引言


今天在发送邮件的时候,发现  excel附件名称乱套了,导致文件失效, 之前发送都是正常的,因为是平台封装的发送邮件的工具类,所以一脸懵逼,别的项目好好的发送,今天突然出现错误。


20200731152924920.png



经过多次尝试发现,发送成功和失败的区别在于文件名称不同,于是我们把文件名称修改的很短后发现竟然发送成功了,是不是很坑,然我回头去看发送邮件的工具类,发现有个设置 没有打开。


错误原因:


参数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());编码,就可以避免中文乱码了,

目录
相关文章
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
958 1
|
Java 数据安全/隐私保护
使用Java发送邮件的示例
使用Java发送邮件的示例
392 0
Java发送邮件的代码示例
以下是一个使用Java发送邮件的代码示例: ```java import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress;
379 0
|
人工智能 Java
Java发送邮件
Java发送邮件
378 1
|
运维 Cloud Native Java
postman发起post请求遇到报错:java.io.FileNotFoundException (文件名、目录名或卷标语法不正确。)
遇到bug报错,多猜可能的原因,控制变量反复测试,直至找到问题的关键,然后再思考如何解决或者回避。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来
|
Java API 网络安全
Java 发送邮件示例
本示例展示了如何使用Java编程语言发送电子邮件。通过利用JavaMail API,这段代码实现了从配置SMTP服务器,设置邮件属性,到发送邮件的全过程,为开发者提供了实用的参考。
1138 12
|
Java API 数据安全/隐私保护
【亮剑】如何在Java项目中结合Spring框架实现邮件发送功能
【4月更文挑战第30天】本文介绍了如何在Java项目中结合Spring框架实现邮件发送功能。首先,需在`pom.xml`添加Spring和JavaMail依赖。然后,在`applicationContext.xml`配置邮件发送器,包括SMTP服务器信息。接着,创建一个使用依赖注入的`EmailService`类,通过`JavaMailSender`发送邮件。最后,调用`EmailService`的`sendSimpleEmail`方法即可发送邮件。最佳实践包括:使用配置管理敏感信息,利用`MimeMessage`构造复杂邮件,异常处理和日志记录,以及在大量发送时考虑使用邮件队列。
378 1
|
Java
【Java专题_03】使用springboot发送邮件
【Java专题_03】使用springboot发送邮件
284 2
|
网络协议 Java API
Java语言发送邮件的技术性详解
Java语言发送邮件的技术性详解
344 0
|
Java API 数据安全/隐私保护
Java 发送邮件
5月更文挑战第20天