JavaMail带附件时出错
2017-12-07 10:14
120 查看
JavaMail requires an InputStreamSource that creates a fresh stream for every
// 添加附件的方法public void addAttachment(String attachmentFilename, DataSource dataSource) throws MessagingException { Assert.notNull(attachmentFilename, "Attachment filename must not be null"); Assert.notNull(dataSource, "DataSource must not be null"); try { MimeBodyPart mimeBodyPart = new MimeBodyPart(); mimeBodyPart.setDisposition("attachment"); mimeBodyPart.setFileName(MimeUtility.encodeText(attachmentFilename)); mimeBodyPart.setDataHandler(new DataHandler(dataSource)); this.getRootMimeMultipart().addBodyPart(mimeBodyPart); } catch (UnsupportedEncodingException var4) { throw new MessagingException("Failed to encode attachment filename", var4); } } public void addAttachment(String attachmentFilename, File file) throws MessagingException { Assert.notNull(file, "File must not be null"); FileDataSource dataSource = new FileDataSource(file); dataSource.setFileTypeMap(this.getFileTypeMap()); this.addAttachment(attachmentFilename, (DataSource)dataSource); } public void addAttachment(String attachmentFilename, InputStreamSource inputStreamSource) throws MessagingException { String contentType = this.getFileTypeMap().getContentType(attachmentFilename); this.addAttachment(attachmentFilename, inputStreamSource, contentType); } public void addAttachment(String attachmentFilename, InputStreamSource inputStreamSource, String contentType) throws MessagingException { Assert.notNull(inputStreamSource, "InputStreamSource must not be null"); if (inputStreamSource instanceof Resource && ((Resource)inputStreamSource).isOpen()) { throw new IllegalArgumentException("Passed-in Resource contains an open stream: invalid argument. JavaMail requires an InputStreamSource that creates 4000 a fresh stream for every call."); } else { DataSource dataSource = this.createDataSource(inputStreamSource, contentType, attachmentFilename); this.addAttachment(attachmentFilename, dataSource); } }
InputStreamResource inputStreamResource
messageHelper.addAttachment(MimeUtility.encodeWord(fileName), new ByteArrayResource(IOUtils.toByteArray(inputStreamResource.getInputStream())));
流不匹配会导致报错。通过转换成对应的流即可解决
相关文章推荐
- javamail写带附件eml文件并调用outlook的方法
- javamail 发送附件的例子
- 使用JavaMail发送邮件之发送带附件邮件二
- 用javamail发送邮件(带附件)的简单实例
- 用javamail发送附件
- JavaMail邮件发送-能发送附件和带背景音乐的邮件的小系统
- javamail 附件名保存乱码问题
- JavaMail邮件发送-发送带附件的邮件
- 用java实现的邮件系统七(javamail收取复杂邮件-带附件和html)
- JavaMail 解析附件
- (转)用javamail发送带附件的邮件
- javaMail邮件接收解析内容及附件 及删除邮件
- javaMail实现发送E_mail添加附件
- 用javamail发送带附件的邮件
- 用JavaMail发送带附件的邮件
- Javamail中附件中文名字乱码祥解
- javamail添加附件
- javaMail发送邮件附件名乱码问题
- JavaMail收发邮件(包含附件)
- JavaMail发送邮件和附件(源码)_1