diff --git a/mallinkAdmin/src/main/resources/application.yml b/mallinkAdmin/src/main/resources/application.yml
index 02d57967c..8b2dca921 100644
--- a/mallinkAdmin/src/main/resources/application.yml
+++ b/mallinkAdmin/src/main/resources/application.yml
@@ -21,7 +21,16 @@ spring:
cache-names: redis_cache #缓存的名字(可以不指定)
redis:
time-to-live: 60000ms #很重要,缓存的有效时间,以便缓存的过期(单位为毫秒)
-
+ mail:
+ host: smtp.exmail.qq.com
+ username: wuguoqiang@iformall.com
+ password: SL4ZBgG3pXWqpAk3 # 授权密码
+ properties:
+ mail:
+ smtp:
+ auth: true
+ starttls:
+ enable: true
# @{link} https://github.com/abel533
#Mybatis
diff --git a/mallinkBApi/src/main/resources/application.yml b/mallinkBApi/src/main/resources/application.yml
index 83ae69c9e..3e27ac7f8 100644
--- a/mallinkBApi/src/main/resources/application.yml
+++ b/mallinkBApi/src/main/resources/application.yml
@@ -13,6 +13,16 @@ spring:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
default-property-inclusion: non_null
+ mail:
+ host: smtp.exmail.qq.com
+ username: wuguoqiang@iformall.com
+ password: SL4ZBgG3pXWqpAk3 # 授权密码
+ properties:
+ mail:
+ smtp:
+ auth: true
+ starttls:
+ enable: true
# @{link} https://github.com/abel533
#Mybatis
diff --git a/mallinkCApi/src/main/resources/application.yml b/mallinkCApi/src/main/resources/application.yml
index 8b879c976..eebcee65e 100644
--- a/mallinkCApi/src/main/resources/application.yml
+++ b/mallinkCApi/src/main/resources/application.yml
@@ -12,6 +12,16 @@ spring:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
default-property-inclusion: non_null
+ mail:
+ host: smtp.exmail.qq.com
+ username: wuguoqiang@iformall.com
+ password: SL4ZBgG3pXWqpAk3 # 授权密码
+ properties:
+ mail:
+ smtp:
+ auth: true
+ starttls:
+ enable: true
# @{link} https://github.com/abel533
diff --git a/mallinkSchedule/src/main/resources/application.yml b/mallinkSchedule/src/main/resources/application.yml
index b7e6a74a0..d7f73fa8b 100644
--- a/mallinkSchedule/src/main/resources/application.yml
+++ b/mallinkSchedule/src/main/resources/application.yml
@@ -21,6 +21,16 @@ spring:
cache-names: redis_cache #缓存的名字(可以不指定)
redis:
time-to-live: 60000ms #很重要,缓存的有效时间,以便缓存的过期(单位为毫秒)
+ mail:
+ host: smtp.exmail.qq.com
+ username: wuguoqiang@iformall.com
+ password: SL4ZBgG3pXWqpAk3 # 授权密码
+ properties:
+ mail:
+ smtp:
+ auth: true
+ starttls:
+ enable: true
# @{link} https://github.com/abel533
diff --git a/mallinkService/src/main/java/com/iformall/common/GlobalDefultExceptionHandler.java b/mallinkService/src/main/java/com/iformall/common/GlobalDefultExceptionHandler.java
new file mode 100644
index 000000000..206adf796
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/common/GlobalDefultExceptionHandler.java
@@ -0,0 +1,68 @@
+package com.iformall.common;
+
+
+import com.iformall.exception.MallinkException;
+import com.iformall.service.MailService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Enumeration;
+
+@ControllerAdvice
+public class GlobalDefultExceptionHandler {
+
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ @Autowired
+ private MailService mailService;
+
+ @ExceptionHandler(Exception.class)
+ @ResponseBody
+ public String defultExcepitonHandler(HttpServletRequest request, Exception e) {
+ log(e, request);
+
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ e.printStackTrace(pw);
+
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
+
+ StringBuilder sb = new StringBuilder();
+ sb.append(df.format(new Date()));
+ sb.append("\n");
+ sb.append(sw.toString());
+
+ String[] receivers = new String[] {"hupeng@iformall.com", "wuguoqiang@iformall.com", "gongbiao@iformall.com"};
+
+ //发送邮件
+ mailService.sendSimpleMail(receivers, "请求地址:" + request.getRequestURL() + "异常", sb.toString());
+
+ return "发生异常";
+ }
+
+ private void log(Exception ex, HttpServletRequest request) {
+ logger.error("************************异常开始*******************************");
+ logger.error("请求地址:" + request.getRequestURL());
+ Enumeration enumeration = request.getParameterNames();
+ logger.error("请求参数");
+ while (enumeration.hasMoreElements()) {
+ String name = enumeration.nextElement().toString();
+ logger.error(name + "---" + request.getParameter(name));
+ }
+
+ StackTraceElement[] error = ex.getStackTrace();
+ for (StackTraceElement stackTraceElement : error) {
+ logger.error(stackTraceElement.toString());
+ }
+ logger.error("************************异常结束*******************************");
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/service/MailService.java b/mallinkService/src/main/java/com/iformall/service/MailService.java
new file mode 100644
index 000000000..01020a3a3
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/MailService.java
@@ -0,0 +1,131 @@
+package com.iformall.service;
+
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.stereotype.Service;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.io.File;
+
+@Service
+public class MailService {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ @Autowired
+ private JavaMailSender sender;
+
+ @Value("${spring.mail.username}")
+ private String from;
+
+ /**
+ * 发送纯文本的简单邮件
+ * @param to
+ * @param subject
+ * @param content
+ */
+ public void sendSimpleMail(String[] to, String subject, String content){
+ SimpleMailMessage message = new SimpleMailMessage();
+ message.setFrom(from);
+ message.setTo(to);
+ message.setSubject(subject);
+ message.setText(content);
+
+ try {
+ sender.send(message);
+ logger.info("简单邮件已经发送。");
+ } catch (Exception e) {
+ logger.error("发送简单邮件时发生异常!", e);
+ }
+ }
+
+ /**
+ * 发送html格式的邮件
+ * @param to
+ * @param subject
+ * @param content
+ */
+ public void sendHtmlMail(String to, String subject, String content){
+ MimeMessage message = sender.createMimeMessage();
+
+ try {
+ //true表示需要创建一个multipart message
+ MimeMessageHelper helper = new MimeMessageHelper(message, true);
+ helper.setFrom(from);
+ helper.setTo(to);
+ helper.setSubject(subject);
+ helper.setText(content, true);
+
+ sender.send(message);
+ logger.info("html邮件已经发送。");
+ } catch (MessagingException e) {
+ logger.error("发送html邮件时发生异常!", e);
+ }
+ }
+
+ /**
+ * 发送带附件的邮件
+ * @param to
+ * @param subject
+ * @param content
+ * @param filePath
+ */
+ public void sendAttachmentsMail(String to, String subject, String content, String filePath){
+ MimeMessage message = sender.createMimeMessage();
+
+ try {
+ //true表示需要创建一个multipart message
+ MimeMessageHelper helper = new MimeMessageHelper(message, true);
+ helper.setFrom(from);
+ helper.setTo(to);
+ helper.setSubject(subject);
+ helper.setText(content, true);
+
+ FileSystemResource file = new FileSystemResource(new File(filePath));
+ String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
+ helper.addAttachment(fileName, file);
+
+ sender.send(message);
+ logger.info("带附件的邮件已经发送。");
+ } catch (MessagingException e) {
+ logger.error("发送带附件的邮件时发生异常!", e);
+ }
+ }
+
+ /**
+ * 发送嵌入静态资源(一般是图片)的邮件
+ * @param to
+ * @param subject
+ * @param content 邮件内容,需要包括一个静态资源的id,比如:
+ * @param rscPath 静态资源路径和文件名
+ * @param rscId 静态资源id
+ */
+ public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){
+ MimeMessage message = sender.createMimeMessage();
+
+ try {
+ //true表示需要创建一个multipart message
+ MimeMessageHelper helper = new MimeMessageHelper(message, true);
+ helper.setFrom(from);
+ helper.setTo(to);
+ helper.setSubject(subject);
+ helper.setText(content, true);
+
+ FileSystemResource res = new FileSystemResource(new File(rscPath));
+ helper.addInline(rscId, res);
+
+ sender.send(message);
+ logger.info("嵌入静态资源的邮件已经发送。");
+ } catch (MessagingException e) {
+ logger.error("发送嵌入静态资源的邮件时发生异常!", e);
+ }
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index 22d5fed14..b5cb6e1f3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -77,6 +77,11 @@
spring-boot-starter-web-services
+
+ org.springframework.boot
+ spring-boot-starter-mail
+
+
org.mybatis.spring.boot
mybatis-spring-boot-starter