javaMail直接发送附件,无须生成临时文件
来源:互联网 发布:淘宝在哪里买装修模板 编辑:程序博客网 时间:2024/06/05 19:33
以excel附件为例:
先引入依赖:
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency>
@Servicepublic class MailService {private final Logger logger = LoggerFactory.getLogger(this.getClass());private final JavaMailSender sender;@Value("${spring.mail.username}")private String from;public MailService(JavaMailSender sender) {this.sender = sender;}/** * 利用helper设置各种邮件发送相关的信息 */private MimeMessageHelper setInfoByHelper(String to, String subject, String content, MimeMessage message)throws MessagingException {//true表示需要创建一个multipart messageMimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(from);helper.setTo(to);helper.setSubject(subject);helper.setText(content, true);return helper;}/** * 发送带附件的邮件 * @param to 收件人列表 * @param subject 邮件标题 * @param content 邮件内容 * @param inputStreamSource 附件streamSource,可以这样获得:new ByteArrayResource(ByteArrayOutputStream.toByteArray()); * @param fileName 附件的文件名 */public void sendAttachmentsMail(String to, String subject, String content, InputStreamSource inputStreamSource, String fileName){MimeMessage message = sender.createMimeMessage();try {MimeMessageHelper helper = setInfoByHelper(to, subject, content, message);helper.addAttachment(fileName, inputStreamSource);sender.send(message);logger.debug("带附件的邮件已经发送。");} catch (MessagingException e) {logger.error("发送带附件的邮件时发生异常!", e);}}}
方法调用(测试用例):
利用ByteArrayOutputStream把excel文件输出到bytes[]中,然后由ByteArrayResource包装起来传递给邮件服务。
@Testpublic void sendMailWithExcel() throws IOException {String[] headers = {"col1","col2","col3"};// 声明一个工作薄HSSFWorkbook wb = new HSSFWorkbook();// 生成一个表格HSSFSheet sheet = wb.createSheet();HSSFRow row = sheet.createRow(0);for (int i = 0; i < headers.length; i++) {HSSFCell cell = row.createCell(i);cell.setCellValue(headers[i]);}int rowIndex = 1;for(int j=0; j<3; j++){row = sheet.createRow(rowIndex);rowIndex++;HSSFCell cell1 = row.createCell(0);cell1.setCellValue(j);cell1 = row.createCell(1);cell1.setCellValue(j+1);cell1 = row.createCell(2);cell1.setCellValue(j+2);}for (int i = 0; i < headers.length; i++) {sheet.autoSizeColumn(i);}ByteArrayOutputStream os = new ByteArrayOutputStream(1000);wb.write(os);wb.close();InputStreamSource iss = new ByteArrayResource(os.toByteArray());os.close();mailService.sendAttachmentsMail("xjj@qq.com","attachmentMail subject","I have an attachment",iss, "abc1.xlsx");}}
阅读全文
0 0
- javaMail直接发送附件,无须生成临时文件
- 用javamail发送附件
- JavaMail 发送附件的例子
- javamail 发送附件的例子
- JavaMail发送邮件带有附件
- JavaMail发送邮件(带附件)
- javaMail 邮件发送带附件
- 使用javamail发送附件,实践
- JavaMail发送邮件(带附件)
- javamail发送邮件《带附件》
- JavaMail直接发送邮件
- 无须SMTP服务器中转直接发送电子邮件
- javamail邮件发送,带附件发送
- 用JavaMail发送带附件的邮件
- 用JavaMail发送带附件的邮件
- 用JavaMail发送带附件的邮件
- 使用javamail发送带附件的邮件
- 使用javamail发送带附件的邮件
- C# 委托
- Kafka_基础和架构
- 二叉树的各种基本运算
- Leetcode题解-25. Reverse Nodes in k-Group
- jsp编译报错:Multiple annotations found at this line:
- javaMail直接发送附件,无须生成临时文件
- 使用Jenkins配置SpringBoot的自动化构建
- android开发案例
- Flex柱状图
- delphi 获取文件所在路径
- 【Scikit-Learn 中文文档】预测目标 (y) 的转换
- linux各个配置
- BP神经网络-异或问题
- Linux 网络编程