From e1454a154718e20abbab36d0def4de9124a07254 Mon Sep 17 00:00:00 2001 From: lyfO_o <764716047@qq.com> Date: 星期五, 11 六月 2021 12:03:26 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master --- src/main/java/com/nanometer/smartlab/util/EmailSend.java | 69 +++++++++++++++++++++++ src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java | 58 +++++++++++++++++++ src/main/java/com/nanometer/smartlab/util/EmailConfigService.java | 13 ++++ src/main/webapp/WEB-INF/config.properties | 3 + pom.xml | 6 + 5 files changed, 148 insertions(+), 1 deletions(-) diff --git a/pom.xml b/pom.xml index c3ba94f..63e613a 100644 --- a/pom.xml +++ b/pom.xml @@ -368,7 +368,11 @@ <artifactId>mail</artifactId> <version>1.4.1</version> </dependency> - + <dependency > + <groupId >com.sun.mail </groupId > + <artifactId >javax.mail </artifactId > + <version >1.6.0 </version > + </dependency > <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> diff --git a/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java b/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java index a88d64c..25a3378 100644 --- a/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java +++ b/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java @@ -1,6 +1,7 @@ package com.nanometer.smartlab.email; import com.nanometer.smartlab.entity.EmailStatus; +import com.nanometer.smartlab.entity.SysReagent; import com.nanometer.smartlab.entity.enumtype.EmailSendStatus; import com.nanometer.smartlab.exception.BusinessException; import com.nanometer.smartlab.service.*; @@ -11,6 +12,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; /** @@ -56,4 +58,60 @@ } } } + + +// @Scheduled(cron = "0/5 * * * * ?") //每隔5秒执行一次 + @Scheduled(cron = "0 0 8 * * ?") //每天8点执行一次 + public void EmailSendStock(){ + List<String> revicerList = new ArrayList<>(); + + List<SysReagent> sysReagentList = new ArrayList<>(); + + + StringBuffer content = new StringBuffer("<html><body>"); + content.append("<div style=\"line-height:1.7;color:#000000;font-size:14px;font-family:Arial\">"); + content.append("<table border=\"1\">"); + content.append("<tbody>"); + content.append("<tr>"); + content.append("<th>试剂名称</th>"); + content.append("<th>产品编号</th>"); + content.append("<th>CAS</th>"); + content.append("<th>试剂类型</th>"); + content.append("<th>供应商</th>"); + content.append("<th>厂家</th>"); + content.append("<th>规格</th>"); + content.append("<th>包装</th>"); + content.append("<th>安全库存</th>"); + content.append("<th>实际库存</th>"); + content.append("</tr>"); + for (SysReagent sysReagent : sysReagentList){ + content.append("<tr>"); + content.append("<td>"+sysReagent.getName()+"</td>"); + content.append("<td>"+sysReagent.getProductSn()+"</td>"); + content.append("<td>"+sysReagent.getCas()+"</td>"); + content.append("<td>"+sysReagent.getReagentType()+"</td>"); + content.append("<td>"+sysReagent.getSupplierName()+"</td>"); + content.append("<td>"+sysReagent.getProductHomeName()+"</td>"); + content.append("<td>"+sysReagent.getReagentFormat()+"</td>"); + content.append("<td>"+sysReagent.getReagentUnit()+"</td>"); + //content.append("<td>"+sysReagent+"</td>");安全库存 + //content.append("<td>"+sysReagent+"</td>");实际库存 + content.append("</tr>"); + } + content.append("</tbody></table></div>"); + content.append("</body></html>"); + + try { + EmailSend.sendArrivalEmail(revicerList,content.toString()); + // 发送成功,更新邮件发送状态为:已发送 + } catch (BusinessException e) { + // 发送失败,更新邮件发送状态为:发送失败 + logger.warn("操作失败。", e); + } catch (Exception e) { + logger.error(e); + } + } + + + } diff --git a/src/main/java/com/nanometer/smartlab/util/EmailConfigService.java b/src/main/java/com/nanometer/smartlab/util/EmailConfigService.java index 6181cbd..8ed8b25 100644 --- a/src/main/java/com/nanometer/smartlab/util/EmailConfigService.java +++ b/src/main/java/com/nanometer/smartlab/util/EmailConfigService.java @@ -19,6 +19,11 @@ @Value("${smtp.content}") String smtpContent; + @Value("${zkysmtp.user}") + String zkySmtpUser; + @Value("${zkysmtp.pwd}") + String zkySmtpPwd; + public String getSmtpSubject() { return smtpSubject; } @@ -42,4 +47,12 @@ public String getSmtpPwd() { return smtpPwd; } + + public String getZkySmtpUser() { + return zkySmtpUser; + } + + public String getZkySmtpPwd() { + return zkySmtpPwd; + } } diff --git a/src/main/java/com/nanometer/smartlab/util/EmailSend.java b/src/main/java/com/nanometer/smartlab/util/EmailSend.java index 1a20d2c..4eb6c29 100644 --- a/src/main/java/com/nanometer/smartlab/util/EmailSend.java +++ b/src/main/java/com/nanometer/smartlab/util/EmailSend.java @@ -12,8 +12,11 @@ import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.text.MessageFormat; +import java.text.SimpleDateFormat; import java.util.Date; +import java.util.List; import java.util.Properties; +import com.sun.mail.util.MailSSLSocketFactory; public class EmailSend { @@ -74,5 +77,71 @@ } } } + + + public static void sendArrivalEmail(List<String> revicerList, String msg){ + EmailConfigService cs = SpringUtil.getBean("emailConfigService", EmailConfigService.class); + String sender = cs.getZkySmtpUser();/*发送人*/ + String password = cs.getZkySmtpPwd(); + + String ZkySmtp = "smtp.cstnet.cn"; /*中科院邮件服务器*/ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Properties prop = new Properties(); + prop.setProperty("mail.host", ZkySmtp); + prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议 + prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码 + prop.setProperty("mail.smtp.port", "25"); + + MailSSLSocketFactory mailSSLSocketFactory = null; + try{ + mailSSLSocketFactory = new MailSSLSocketFactory(); + mailSSLSocketFactory.setTrustAllHosts(true); + }catch (Exception e){ + logger.error("邮件开启 MailSSLSocketFactory 失败:"+e.getMessage()); + } + + if (mailSSLSocketFactory != null) { + + prop.put("mail.smtp.ssl.enable", false); + prop.put("mail.smtp.ssl.socketFactory", mailSSLSocketFactory); + //创建定义整个应用程序所需的环境信息的 Session 对象 + Session session = Session.getDefaultInstance(prop, new Authenticator() { + public PasswordAuthentication getPasswordAuthentication() { + //发件人邮件用户名、授权码 + return new PasswordAuthentication(sender, password); + } + }); + + for (String revicer : revicerList) { + try { + //2、通过session得到transport对象 + Transport ts = session.getTransport(); + //3、使用邮箱的用户名和授权码连上邮件服务器 + ts.connect(sender, password); + try { + //4、创建邮件 + //创建邮件对象 + MimeMessage message = new MimeMessage(session); + //指明邮件的发件人 + message.setFrom(new InternetAddress(sender)); + //指明邮件的收件人 + message.setRecipient(Message.RecipientType.TO, new InternetAddress(revicer)); + //邮件的标题 + message.setSubject(sdf.format(new Date())+"-待补货试剂"); + //邮件的文本内容 + message.setContent(msg, "text/html;charset=UTF-8"); + //5、发送邮件 + ts.sendMessage(message, message.getAllRecipients()); + } catch (Exception e) { + logger.error("邮件发送" + "失败:" + e.getMessage()); + } + ts.close(); + } catch (Exception e) { + logger.error("邮件发送失败:" + e.getMessage()); + } + } + } + logger.error("邮件发送完成" + "时间:" + sdf.format(new Date())); + } } diff --git a/src/main/webapp/WEB-INF/config.properties b/src/main/webapp/WEB-INF/config.properties index 3c2647e..21165d9 100644 --- a/src/main/webapp/WEB-INF/config.properties +++ b/src/main/webapp/WEB-INF/config.properties @@ -35,6 +35,9 @@ smtp.from= smtp.subject= smtp.content= + +zkysmtp.user=xlli2020@sinano.ac.cn +zkysmtp.pwd=Forever*#15 #\u8C03\u7528\u7C7B EmailSendSchedule \u7535\u5B50\u90AE\u4EF6\u53D1\u9001\u8BA1\u5212(\u5355\u4F4D\u6BEB\u79D2) emailSend.schedule.delay=60000 -- Gitblit v1.9.2