POI导出生产Excel我就不说了,请参考文章:https://blog.csdn.net/zhuwei_clark/article/details/91040056
首先,先配置发送邮件功能,修改pom文件
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
构建发送邮件工具类
package com.xuebaclass.sato.com.util;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message.RecipientType;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.mail.util.ByteArrayDataSource;
import org.apache.log4j.Logger;
/**
* 发送邮件
* @author 大仙
*
*/
public class EmailUtil {
private static final String SMTP_HOST = "smtp.exmail.qq.com";
private static final String USER_NAME = "itadmin@xuebaedu.com";
private static final String PASSWORD = "qeAHYNj2P2nStsKk";
static final Logger logger = Logger.getLogger(EmailUtil.class);
/**
* 发送邮件
* @param title
* @param content
* @param receiveList
* @throws Exception
*/
public static void sendEmail(String title, String content,List<String> receiveList,byte[] fileBytes){
logger.info("send report start.");
Session session = EmailUtil.getSession();
MimeMessage message = new MimeMessage(session);
InternetAddress[] toArray = new InternetAddress[receiveList.size()];
try {
//接收列表
for (int i = 0; i < toArray.length; i++) {
toArray[i]= new InternetAddress(receiveList.get(i));
}
message.setSubject(title);
message.setSentDate(new Date());
message.setFrom(new InternetAddress(USER_NAME));
message.addRecipients(RecipientType.TO, toArray);
// 创建消息部分
BodyPart messageBodyPart = new MimeBodyPart();
// 消息
messageBodyPart.setContent(content, "text/html;charset=utf-8");
// 创建多重消息
Multipart multipart = new MimeMultipart();
// 设置文本消息部分
multipart.addBodyPart(messageBodyPart);
// 附件部分
messageBodyPart = new MimeBodyPart();
// 设置要发送附件的文件路径
DataSource source=new ByteArrayDataSource(fileBytes, "application/excel");
messageBodyPart.setDataHandler(new DataHandler(source));
// 处理附件名称中文(附带文件路径)乱码问题
messageBodyPart.setFileName(MimeUtility.encodeText(title+".xls"));
multipart.addBodyPart(messageBodyPart);
// 发送完整消息
message.setContent(multipart);
// 发送消息
Transport.send(message);
logger.info("send refund email successful.");
} catch (Exception e) {
logger.error(e, e);
}
}
public static void main(String[] args) {
List<String> receiveList = new ArrayList<String>();
receiveList.add("zwahyh@qq.com");
// sendEmail("【TMK】集赞/助力成功数据诊断课约课情况", "测试", receiveList);
}
public static Session getSession() {
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", SMTP_HOST);
props.setProperty("mail.smtp.port", "25");
props.setProperty("mail.smtp.auth", "true");
Session session = Session.getInstance(props,
new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USER_NAME, PASSWORD);
}
});
return session;
}
}
生成Excel内容
@Override
public String sendExperiencesStatusEmail(String startDate, String endDate) {
//查询数据
List<Map<String, Object>> data = crmCourseDao.getExperiencesStatusByDate(startDate, endDate);
//获取表头
String[] titile = createTitle();
String[][] content = new String[data.size()][];
//处理数据
for (int i = 0; i < data.size(); i++) {
Map<String, Object> map = data.get(i);
content[i] = new String[titile.length];
content[i][0] = Pub_Tools.getString_TrimZeroLenAsNull(map.get("contactName"));
content[i][1] = Pub_Tools.getString_TrimZeroLenAsNull(map.get("contactMobile"));
content[i][2] = Pub_Tools.getString_TrimZeroLenAsNull(map.get("tmkName"));
content[i][3] = Pub_Tools.getString_TrimZeroLenAsNull(map.get("lessonStatus"));
content[i][4] = Pub_Tools.getString_TrimZeroLenAsNull(map.get("salesName"));
content[i][5] = Pub_Tools.getString_TrimZeroLenAsNull(map.get("jizanDate"));
content[i][6] = Pub_Tools.getString_TrimZeroLenAsNull(map.get("lessonDate"));
}
//创建HSSFWorkbook
HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook("【TMK】助力成功数据诊断课约课情况",titile , content, null);
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
wb.write(os);
} catch (IOException e) {
e.printStackTrace();
}
List<String> receiveList = new ArrayList<String>();
receiveList.add("yangzhipeng@xuebaedu.com");
receiveList.add("zwahyh@qq.com");
EmailUtil.sendEmail("【TMK】集赞/助力成功数据诊断课约课情况", "【TMK】集赞/助力成功数据诊断课约课情况", receiveList,os.toByteArray());
return null;
}
/**
* 获取标题
* @return
*/
private String[] createTitle() {
String[] title = new String[] {"客户名称","客户电话","TMK姓名"," 诊断课状态","CC姓名","集赞成功时间","诊断课时间"};
return title;
}