通過(guò)springBoot定時(shí)發(fā)送郵件
1.導(dǎo)入發(fā)送郵件的包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.配置yml
mail:
host: smtp.exmail.qq.com ##郵件域名
default-encoding: UTF-8
port: 465
protocol: smtps
username: zzzzz@qq.com ## 發(fā)送人郵件
password: sss ##企業(yè)郵箱獲取服務(wù)授權(quán)碼,可以百度一下怎么申請(qǐng)授權(quán)碼
properties:
mail:
debug: false
smtp:
timeout: 10000
connection-timeout: 10000
writetimeout: 10000
ssl:
enabled: true
required: true
socketFactory:
class: javax.net.ssl.SSLSocketFactory
port: 465
3.添加定時(shí)任務(wù)
/**
* 每天12點(diǎn)更新
* <p>
* 0 0/1 * * * ?
* <p>
* 0 0 10 * * ?
*/
@Scheduled(cron = "0 0 12 * * ?")
public void endMailTask() throws IOException {
if (scheduledOpen) {
sendMailService.sendMail();
}
}
4.實(shí)現(xiàn)
@Service
public class SendMailServiceImpl implements SendMailService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Resource
private JavaMailSender javaMailSender;
@Resource
private OrderDao orderDao;
//發(fā)送人
private String from = "test@qq.com";
//接收人
private String to = "test1@qq.com";
//標(biāo)題
private String subject = "標(biāo)題";
//正文
private String context = "標(biāo)題";
@Override
public void sendMail() throws IOException {
logger.info("開(kāi)始發(fā)送郵件。");
//getList
InputStreamSource orderList = getOrderList();
if (orderList == null) {
return;
}
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = setInfoByHelper(to, subject, context, message);
helper.addAttachment("郵件名稱.xls", orderList);
javaMailSender.send(message);
logger.info("帶附件的郵件已經(jīng)發(fā)送。");
} catch (MessagingException e) {
logger.error("發(fā)送帶附件的郵件時(shí)發(fā)生異常!", e);
}
logger.info("結(jié)束發(fā)送郵件。");
}
/**
* 利用helper設(shè)置各種郵件發(fā)送相關(guān)的信息
*/
private MimeMessageHelper setInfoByHelper(String to, String subject, String content, MimeMessage message)
throws MessagingException {
//true表示需要?jiǎng)?chuàng)建一個(gè)multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
//接收人,可添加多個(gè)
String[] receiveUsers =new String[]{"sss", "sss"};
//抄送人,可添加多個(gè)
String[] copyUsers = new String[]{"sssss"};
helper.setTo(receiveUsers);
helper.setCc(copyUsers);
helper.setSubject(subject);
helper.setText(content, true);
return helper;
}
private InputStreamSource getOrderList() throws IOException {
//
// DateUtils.getDayStart()
//業(yè)務(wù)邏輯
List<OrderDO> orderAll = orderDao.getByStatusAndTime(ICBC_JH_DTQD.getItemCode(), 8 , dayStart, dayEnd);
if (orderAll.isEmpty()) {
return null;
}
//標(biāo)頭
String[] headers = {"訂單編號(hào)", "充值電話號(hào)碼", "充值金額(單位:分)", "支付完成時(shí)間"};
// 聲明一個(gè)工作薄
HSSFWorkbook wb = new HSSFWorkbook();
// 生成一個(gè)表格
HSSFSheet sheet = wb.createSheet("sheet0");
HSSFRow row = sheet.createRow(0);
// 設(shè)置表頭字體樣式
HSSFFont columnHeadFont = wb.createFont();
columnHeadFont.setFontName("宋體");
columnHeadFont.setFontHeightInPoints((short) 10);
// 列頭的樣式
HSSFCellStyle columnHeadStyle = wb.createCellStyle();
columnHeadStyle.setFont(columnHeadFont);
columnHeadStyle.setLocked(true);
columnHeadStyle.setWrapText(true);
// 左邊框的顏色
columnHeadStyle.setLeftBorderColor(HSSFColor.BLACK.index);
// 邊框的大小
columnHeadStyle.setBorderLeft(BorderStyle.valueOf((short) 1));
// 右邊框的顏色
columnHeadStyle.setRightBorderColor(HSSFColor.BLACK.index);
// 邊框的大小
columnHeadStyle.setBorderRight(BorderStyle.valueOf((short) 1));
// 設(shè)置單元格的邊框顏色
columnHeadStyle.setBottomBorderColor(HSSFColor.BLACK.index);
// 設(shè)置單元格的背景顏色(單元格的樣式會(huì)覆蓋列或行的樣式)
columnHeadStyle.setFillForegroundColor(HSSFColor.WHITE.index);
// 設(shè)置普通單元格字體樣式
HSSFFont font = wb.createFont();
font.setFontName("宋體");
font.setFontHeightInPoints((short) 10);
for (int i = 0; i < headers.length; i++) {
HSSFCell cell = row.createCell(i);
cell.setCellValue(new HSSFRichTextString(headers[i]));
cell.setCellStyle(columnHeadStyle);
}
int rowIndex = 1;
for (OrderDO orderDO : orderAll){
row = sheet.createRow(rowIndex);
rowIndex++;
HSSFCell cell = row.createCell(0);
cell.setCellValue(new HSSFRichTextString(orderDO.getOrderNo()));
cell.setCellStyle(columnHeadStyle);
cell = row.createCell(1);
cell.setCellValue(new HSSFRichTextString(orderDO.getIssueAccountNum()));
cell.setCellStyle(columnHeadStyle);
cell = row.createCell(2);
cell.setCellValue(new HSSFRichTextString(orderDO.getPrizeAmount().toString()));
cell.setCellStyle(columnHeadStyle);
cell = row.createCell(3);
cell.setCellValue(new HSSFRichTextString(DateUtils.formatDateToStr(orderDO.getCompletionTime())));
cell.setCellStyle(columnHeadStyle);
}
ByteArrayOutputStream os = new ByteArrayOutputStream(1000);
wb.write(os);
wb.close();
InputStreamSource iss = new ByteArrayResource(os.toByteArray());
os.close();
return iss;
}
}
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-513575.html
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-513575.html
到了這里,關(guān)于無(wú)緩存定時(shí)發(fā)送帶附件(表格)等郵件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!