Java mail 邮件发送 附件文件名过长的问题 版本1.5及以上
2017-04-05 18:36
666 查看
在使用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();
解决方案如下:
一、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及以上 spring
- commons-email && Java mail 邮件发送 附件文件名过长的问题 版本1.5及以上
- 邮件发送附件失败和附件名称过长不能解析的问题
- smtp发送邮件附件时, 如果文件名过长, 会导致附件乱码, 除了重新编译smtp以外, 限制上传文件名长度就是个简便的方法了.
- 退而求其次解决.NET4.0发送邮件,附件名字过长会导致附件文件名乱码或后缀名变为.BIN
- java mail发送复杂邮件代码(包括附件,html消息,纯文本消息)
- 关于解决Jmail发送附件和html邮件的问题
- Java Mail简化邮件发送+附件发送(源码奉上)
- Android4.1.2 Email发送邮件附件中文名乱码问题
- 关于解决Jmail发送附件和html邮件的问题
- javaMail发送邮件附件名乱码问题
- android平台phonegap开发中使用EmailComposer插件发送邮件带附件失败的问题总结
- 解决java mail发送TXT附件被直接显示在正文中的问题
- SMTP发送邮件附件问题已经得到解决!!!
- Java Mail 发送附件的邮件
- Java Mail简化邮件发送+附件发送(源码奉上)
- 用smtp命令发送邮件附件给新浪邮箱的问题
- python邮件发送(带附件,解决中文乱码问题)
- java Mail发送附件邮件
- 调用系统默认邮件程序发送邮件(支持Foxmail带附件但有些问题)