添加jar包
activation.jar
mail.jar
maven的话
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
javaMail核心类
1、Session 可以理解为jdbc中Connection的作用
2、MimeMessage 邮件信息类
3、Transport 发送器用来发送邮件的
导出execl这里就不写了,但是需要将execl生成数据流
//生成execl数据流
ByteArrayOutputStream os = new ByteArrayOutputStream();
workBook.write(os);
ByteArrayInputStream iss = new ByteArrayInputStream(os.toByteArray());
os.close();
long startTime = System.currentTimeMillis();
String time = DateUtils.getStrDate(startTime, DateUtils.DATE_FORMAT) + "区域平安每日新增变更汇总表";
try {
//发送邮件
Properties prop = new Properties();
prop.setProperty("mail.smtp.host", "smtp.126.com");
prop.setProperty("mail.smtp.auth", "true");
prop.setProperty("mail.transport.protocol", "smtp");
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
prop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
prop.put("mail.smtp.socketFactory.fallback", "false");
Session session = Session.getInstance(prop);
session.setDebug(true);
Transport ts = session.getTransport();
ts.connect("smtp.126.com", "邮箱名", "授权码");
String content = time;
String title = DateUtils.getStrDate(startTime, DateUtils.DATE_FORMAT) + "区域平安每日新增变更汇总表";
String toUser = changeSetService.findByNamedParam(null).getEMail();
//导出excel
ByteArrayInputStream inputStream = iss;
Message message = createAttachMailXlsx(session, title, content, toUser, inputStream, ".xlsx");
ts.sendMessage(message, message.getAllRecipients());
ts.close();
logger.info("---区域平安每日新增变更汇总表---邮件发送成功---");
} catch (Exception e) {
System.out.println(e.getMessage());
logger.info("--区域平安每日新增变更汇总表--邮件发送成功--");
}
}
public static MimeMessage createAttachMailXlsx(Session session, String title, String content, String toUser, ByteArrayInputStream iss, String suffix) throws MessagingException, IOException {
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("发件人邮箱名"));
List<String> list = JSON.parseArray(toUser, String.class);
//一个收件人
InternetAddress[] sendTo = InternetAddress.parse(String.valueOf(list.get(0)));
message.setRecipients(MimeMessage.RecipientType.TO, sendTo);
list.remove(list.get(0));
//多个抄送人,这里特别注意一下,直接list循环是不能抄送多个收件人的
Address[] address = new InternetAddress[list.size()];
for (int i = 0; i < list.size(); i++) {
address[i] = new InternetAddress(list.get(i));
}
message.setRecipients(Message.RecipientType.CC, address);
message.setSubject(title);
message.setSentDate(new Date());
MimeBodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent(content, "text/html;charset=UTF-8");
MimeBodyPart attachPart = new MimeBodyPart();
/*************3.文件流*************/
DataSource dataSource = new ByteArrayDataSource(iss, "application/excel");
DataHandler dataHandler = new DataHandler(dataSource);
attachPart.setDataHandler(dataHandler);
//解决execl名中文乱码
attachPart.setFileName(MimeUtility.encodeText(title) + suffix);
MimeMultipart multipart = new MimeMultipart();
multipart.addBodyPart(bodyPart);
multipart.addBodyPart(attachPart);
multipart.setSubType("mixed");
message.setContent(multipart);
return message;
}