From 04d13e3a41ef798e07c25c1d3ad2002270a9cb76 Mon Sep 17 00:00:00 2001
From: whycxzp <perryhsu@163.com>
Date: 星期一, 17 十月 2022 13:53:56 +0800
Subject: [PATCH] 邮件发送

---
 src/main/resources/config/application-dev.yml         |    6 ++
 src/main/java/com/whyc/controller/MailController.java |    4 +
 src/main/java/com/whyc/service/MailService.java       |   31 ++++++++++
 src/main/java/com/whyc/util/MailUtil.java             |  113 +++++++++++++++++++++++++++++++++++++
 pom.xml                                               |    4 +
 src/main/java/com/whyc/constant/UserOperation.java    |    5 +
 src/main/resources/config/application-prod.yml        |    6 ++
 7 files changed, 166 insertions(+), 3 deletions(-)

diff --git a/pom.xml b/pom.xml
index c764b67..38723b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -200,6 +200,10 @@
             <scope>system</scope>
             <systemPath>${pom.basedir}/src/main/resources/lib/aspose-words-22.3-jdk16.jar</systemPath>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-mail</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/src/main/java/com/whyc/constant/UserOperation.java b/src/main/java/com/whyc/constant/UserOperation.java
index a2658e2..9f0e07a 100644
--- a/src/main/java/com/whyc/constant/UserOperation.java
+++ b/src/main/java/com/whyc/constant/UserOperation.java
@@ -26,7 +26,10 @@
     TYPE_PARAM_CHANGE(32,"鍙傛暟鍙樻洿"),
     TYPE_PASSWORD_CHANGE(33,"瀵嗙爜淇敼"),
     TYPE_LOGIN_TIMEOUT(34,"鐧诲綍瓒呮椂"),
-    TYPE_LOGIN_NO_PASS(35,"鐧诲綍绯荤粺-鐢ㄦ埛ID鐧诲綍");
+    TYPE_LOGIN_NO_PASS(35,"鐧诲綍绯荤粺-鐢ㄦ埛ID鐧诲綍"),
+
+    /**鑷畾涔夌殑鏃ュ織绫诲瀷*/
+    TYPE_SEND_MAIL(41,"閭欢鍙戦��");
 
 
     private Integer type;
diff --git a/src/main/java/com/whyc/controller/MailController.java b/src/main/java/com/whyc/controller/MailController.java
index c7134ac..4333b7f 100644
--- a/src/main/java/com/whyc/controller/MailController.java
+++ b/src/main/java/com/whyc/controller/MailController.java
@@ -11,6 +11,8 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.mail.MessagingException;
+
 @RestController
 @RequestMapping("mail")
 @Api(tags = "閭欢")
@@ -21,7 +23,7 @@
 
     @ApiOperation("鍙戦�侀偖浠�")
     @PostMapping("sendMail")
-    public Response sendMail(@RequestBody MailDTO mailDTO){
+    public Response sendMail(@RequestBody MailDTO mailDTO) throws MessagingException {
         service.sendMail(mailDTO);
         return new Response().set(1,null,"鍙戦�佸畬鎴�");
     }
diff --git a/src/main/java/com/whyc/service/MailService.java b/src/main/java/com/whyc/service/MailService.java
index 61054d2..5973762 100644
--- a/src/main/java/com/whyc/service/MailService.java
+++ b/src/main/java/com/whyc/service/MailService.java
@@ -1,13 +1,42 @@
 package com.whyc.service;
 
+import com.whyc.constant.UserOperation;
 import com.whyc.dto.MailDTO;
+import com.whyc.util.ActionUtil;
+import com.whyc.util.MailUtil;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.mail.MessagingException;
+import java.util.List;
 
 @Service
 public class MailService {
 
+    @Autowired
+    private MailUtil mailUtil;
 
-    public void sendMail(MailDTO mailDTO) {
+    @Autowired
+    private DocLogService logService;
 
+    @Transactional
+    public void sendMail(MailDTO mailDTO) throws MessagingException {
+        Long uId = ActionUtil.getUser().getId();
+        String name=ActionUtil.getUser().getName();
+        mailUtil.sendMailBatch(name,mailDTO.getMailList(),mailDTO.getTitle(),mailDTO.getContent());
+        //鏃ュ織
+        StringBuilder mailUserStr = new StringBuilder();
+        List<String> mailList = mailDTO.getMailList();
+        for (int i = 0; i < mailList.size(); i++) {
+            if(i==0){
+                mailUserStr.append(mailList.get(i));
+            }else{
+                mailUserStr.append(","+mailList.get(i));
+            }
+        }
+
+        String msgDetail = "鍙戦�佺粰閭"+mailUserStr+",鏍囬涓�:"+mailDTO.getTitle()+",鍐呭涓�:"+mailDTO.getContent();
+        logService.record(uId,name, UserOperation.TYPE_SEND_MAIL.getType(),"閭欢鍙戦��",msgDetail);
     }
 }
diff --git a/src/main/java/com/whyc/util/MailUtil.java b/src/main/java/com/whyc/util/MailUtil.java
new file mode 100644
index 0000000..49d88ac
--- /dev/null
+++ b/src/main/java/com/whyc/util/MailUtil.java
@@ -0,0 +1,113 @@
+package com.whyc.util;
+
+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.Component;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.io.File;
+import java.util.List;
+
+@Component
+public class MailUtil {
+    @Value("${spring.mail.username}")
+    String from;
+
+    @Autowired
+    JavaMailSender mailSender;
+    //绠�鍗曢偖浠�
+    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 {
+            mailSender.send(message);
+            System.out.println("绠�鍗曢偖浠跺彂閫佹垚鍔燂紒");
+        } catch (Exception e){
+            System.out.println("鍙戦�佺畝鍗曢偖浠舵椂鍙戠敓寮傚父锛�"+e);
+        }
+    }
+
+    //绠�鍗曢偖浠�
+    public void sendMailBatch(String name, List<String> toList, String subject, String content) throws MessagingException {
+        MimeMessage message = mailSender.createMimeMessage();
+        MimeMessageHelper helper = new MimeMessageHelper(message,false);
+
+        helper.setFrom(from); //鍙戜欢浜�
+        String[] toArr = toList.toArray(new String[toList.size()]);
+        helper.setTo(toArr);//鏀朵欢浜�
+        helper.setSubject(subject); //鏍囬
+        helper.setText("閭欢鏉ヨ嚜鍥剧焊绠$悊骞冲彴璐︽埛:"+name+",鍐呭涓�:"+content);   //鏂囦欢鍐呭
+        mailSender.send(message);
+
+    }
+    //html鏍煎紡閭欢
+    public void sendHtmlMail(String to, String subject, String content){
+        MimeMessage message = mailSender.createMimeMessage();
+        try {
+            //true琛ㄧず闇�瑕佸垱寤轰竴涓猰ultipart message
+            MimeMessageHelper helper = new MimeMessageHelper(message, true);
+            helper.setFrom(from);
+            helper.setTo(to);
+            helper.setSubject(subject);
+            helper.setText(content, true);
+
+            mailSender.send(message);
+            System.out.println("html閭欢鍙戦�佹垚鍔�!");
+        } catch (MessagingException e) {
+            System.out.println("鍙戦�乭tml閭欢鏃跺彂鐢熷紓甯革紒"+e);
+        }
+    }
+
+    //甯﹂檮浠剁殑閭欢
+    public void sendAttachmentsMail(String to, String subject, String content, String filePath){
+        MimeMessage message = mailSender.createMimeMessage();
+
+        try {
+            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);
+
+            mailSender.send(message);
+            System.out.println("甯﹂檮浠剁殑閭欢宸茬粡鍙戦�併��");
+        } catch (MessagingException e) {
+            System.out.println("鍙戦�佸甫闄勪欢鐨勯偖浠舵椂鍙戠敓寮傚父锛�" + e);
+        }
+    }
+
+    //甯﹂潤鎬佽祫婧愮殑閭欢
+    public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){
+        MimeMessage message = mailSender.createMimeMessage();
+
+        try {
+            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);
+
+            mailSender.send(message);
+            System.out.println("宓屽叆闈欐�佽祫婧愮殑閭欢宸茬粡鍙戦�併��");
+        } catch (MessagingException e) {
+            System.out.println("鍙戦�佸祵鍏ラ潤鎬佽祫婧愮殑閭欢鏃跺彂鐢熷紓甯革紒" + e);
+        }
+    }
+}
+
diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml
index f83a90f..77fc75f 100644
--- a/src/main/resources/config/application-dev.yml
+++ b/src/main/resources/config/application-dev.yml
@@ -28,6 +28,12 @@
     multipart:
       max-file-size: 200MB
       max-request-size: 200MB
+  mail:
+    host: smtp.163.com
+    port:
+    username: whyc_doc@163.com
+    password: JAMKMEQUOAGGMSVV
+    default-encoding: UTF-8
 mybatis-plus:
   typeAliasesPackage: com.whyc.pojo,com.whyc.dto
   mapper-locations: classpath:mapper/**/*Mapper.xml
diff --git a/src/main/resources/config/application-prod.yml b/src/main/resources/config/application-prod.yml
index a7ebdbe..4cd86e0 100644
--- a/src/main/resources/config/application-prod.yml
+++ b/src/main/resources/config/application-prod.yml
@@ -28,6 +28,12 @@
     multipart:
       max-file-size: 200MB
       max-request-size: 200MB
+  mail:
+    host: smtp.163.com
+    port:
+    username: whyc_doc@163.com
+    password: JAMKMEQUOAGGMSVV
+    default-encoding: UTF-8
 mybatis-plus:
   typeAliasesPackage: com.whyc.pojo,com.whyc.dto
   mapper-locations: classpath:mapper/**/*Mapper.xml

--
Gitblit v1.9.1