Java mail 邮件发送 附件文件名过长的问题 版本1.5及以上
在使用javamail 1.5版本的时候,如果附件文件名过长,会错误显示为“未命名的附件 00439.dat”
解决方案如下:
一、Javamail jar包退回1.4版本
或者
二、修改参数mail.mime.splitlongparameters为 false
1、添加以下红色代码
messageBodyPart.setFileName(MimeUtility.encodeText(docName));
2、
在new MimeMessage、new MimeMultipart、new MimeBodyPart 之前(一个比较靠前的位置,如果在new MimeMultipart之后添加,有可能无效),添加如下红色代码。
修改完成后记得重启Tomcat
System.getProperties().setProperty("mail.mime.splitlongparameters", "false");
Properties props = new Properties();
try {props.put("mail.smtp.host", host);props.put("mail.smtp.auth", "true");props.put("username", from);props.put("password", pwd);// System.getProperties().setProperty("mail.mime.encodefilename", "true");
// System.getProperties().setProperty("mail.mime.decodefilename", "true");
// System.getProperties().setProperty("mail.mime.encodeparameters", "false");
// System.getProperties().setProperty("mail.mime.decodeparameters", "false");System.getProperties().setProperty("mail.mime.splitlongparameters", "false");MailAuthenticatorService auth = new MailAuthenticatorService(from,pwd);Session session = Session.getInstance(props, auth);session.setDebug(true);
// session.setDebug(false);Transport transport = null;MimeMessage message = new MimeMessage(session);message.setFrom(new InternetAddress(from));transport = session.getTransport("smtp");InternetAddress[] addresses = new InternetAddress[receiver.size()];for (int i = 0; i < receiver.size(); i++) {addresses[i] = new InternetAddress(receiver.get(i).getMailAddress());logger.debug("==>receiver mail address: "+ receiver.get(i).getMailAddress());}message.setRecipients(Message.RecipientType.TO, addresses);message.setSubject(theme);Multipart multipart = new MimeMultipart();BodyPart contentPart = new MimeBodyPart();contentPart.setText(content);multipart.addBodyPart(contentPart);BodyPart messageBodyPart = new MimeBodyPart();DataSource source = new FileDataSource(attachFilePath);messageBodyPart.setDataHandler(new DataHandler(source));docName = "中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文中文.doc";
// docName = "asdfghjklpasdfghjklpasdfghjklpasdfghjklpasdfghjklpasdfghjklpasdfghjklpasdfghjklpasdfghjklpasdfghjklpasdfghjklp.doc";
// docName = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.doc";// messageBodyPart.setFileName(docName);messageBodyPart.setFileName(MimeUtility.encodeText(docName));multipart.addBodyPart(messageBodyPart);message.setContent(multipart);message.saveChanges();transport.connect(host, user, pwd);transport.sendMessage(message, message.getAllRecipients());transport.close();logger.debug("email send finish");} catch (Exception e) {e.printStackTrace();logger.error(e.getMessage());logger.error("email send error");}
Java mail 邮件发送 附件文件名过长的问题 版本1.5及以上相关推荐
- Java Mail 邮件发送(一):入门Demo
本文首发于简书,Java Mail 邮件发送(一):Demo 上周公司的项目要求开发邮件发送功能.自己在网上跟着教程边学边做了一下午,现在基本开发完成了.由于一个同事也想看下该怎么写,顺便学习下.所以 ...
- springboot:java实现邮件及附件发送、HTML正文的三种方式(一)【附带源码】
0. 引言 邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒.统计数据定期发送等需求.一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从零实现邮件发送,这是我们要掌 ...
- java实现邮件发送, 抄送及多附件发送
java实现邮件发送, 抄送及多附件发送 所需的jar包 mailapi.jar和smtp.jar 或 javax-mail-xxx.jar(如javax.mail-1.5.6.jar) ht ...
- Java邮件发送 附件名变.dat问题
问题: 发送带中文邮件名时收到的文件与发送的文件不同 例如: 发送"Java邮件发送附件名变.dat问题.xlsx", 收到的却是"ATT_000781.dat" ...
- Java mail模板发送高级邮件(二)
Java mail模板发送高级邮件 一.见贤思齐焉 我们之前自己发的邮件,大家又没有感觉比较丑呢???毫无美感可言,只有空洞的文字,甚至连基础的排版都没有.如果这是给女娃表白的邮件,那我只能陪你一 ...
- 用java实现邮件发送
电子邮件 1.基础知识铺垫 要在网络上实现邮件功能,必须要有专门的邮件服务器. 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过的邮件,并把邮件投递到邮件接收者的电子邮箱中. SMTP服 ...
- mail 命令发送附件
因为需要经常备份网站的数据,所以了解并学习了下linux下如何通过shell来发送邮件,这里以CentOS为例,使用mail命令来进行外部邮件的发送.mail命令的语法如下: Usage: mail ...
- Linux mail 邮件发送
Linux mail 邮件介绍 在Linux系统下我们可以通过"mail"命令,发送邮件,在运维中通常我们它来实现邮件告警. 安装 (方案1) 一.安装邮件服务 yum insta ...
- 用java实现邮件发送验证码
java实现邮件发送验证码 网易邮箱开通POP3SMTP服务的步骤 java实现邮件发送验证码 建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SM ...
最新文章
- vba基本操作 -- 单元格操作
- 计算机制图学什么,计算机制图
- 离散数学 逻辑判断系统 代码_入学派位查询系统现异常,北京西城区:网站代码逻辑错误,不影响派位结果...
- 百度云:centos7.0+ 安装宝塔与ShopXO开源商城(从0搭建到部署上线) - 教程篇
- [导入]WCF后传系列(8):深度通道编程模型Part 1—设计篇
- FloydWarshall多(所有)源点的最短路径实现(带路径打印)
- 如何找到网站服务器的源代码_如何花3-5分钟找到网站Bug?
- java塔防兽人种族_兽人TD1.09下载
- Visual C++ 6.0下载安装及编写第一个C程序
- 深入理解CatBoost
- Mac中ElasticSearch安装
- Android 利用Canvas实现双指拖动和双指缩放图片
- ASCII码对照表--符号/十进制/十六进制
- 部署新浪云静态页面和服务器步骤
- 读书、学习、工作和生活中收集的20条经典语录:21-40
- 处理python SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: trun
- Mysqldump原理及使用方法
- 深入理解操作系统实验——bomb lab(phase_2)
- 手机APP抓包问题总结及相关解决方案
- 使用matplotlib在图片上画框框