pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/nanometer/smartlab/util/EmailConfigService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/nanometer/smartlab/util/EmailSend.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/WEB-INF/config.properties | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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> 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); } } } 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; } } 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())); } } 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