From 4941aaa5c1c59f17881d3587f1679b93736bd01e Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期一, 02 五月 2022 23:12:16 +0800
Subject: [PATCH] update 重构 pr_172 集成邮件发送功能

---
 ruoyi-admin/src/main/resources/application-prod.yml                                     |   22 +++++
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MailConfig.java                |   24 ++---
 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/MailProperties.java |   58 ++++++++------
 pom.xml                                                                                 |    1 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/email/MailUtils.java                  |   12 +-
 ruoyi-common/pom.xml                                                                    |   11 +-
 ruoyi-demo/src/main/java/com/ruoyi/demo/controller/MailController.java                  |   39 ++++-----
 ruoyi-admin/src/main/resources/application-dev.yml                                      |   50 +++++-------
 8 files changed, 114 insertions(+), 103 deletions(-)

diff --git a/pom.xml b/pom.xml
index 71963f2..4fc098f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,6 @@
         <dynamic-ds.version>3.5.1</dynamic-ds.version>
         <tlog.version>1.3.6</tlog.version>
         <xxl-job.version>2.3.0</xxl-job.version>
-        <mail.version>1.6.2</mail.version>
 
         <!-- jdk11 缂哄け渚濊禆 jaxb-->
         <jaxb.version>3.0.1</jaxb.version>
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 50e060b..6be268b 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -137,34 +137,6 @@
     # 鏄惁寮�鍚痵sl
     ssl: false
 
-  # 閭欢
-  mail:
-    enabled: false
-    # 閭欢鏈嶅姟鍦板潃 (enabled = true 鏃舵墦寮�璇ラ厤缃�)
-#    host: smtp.qq.com
-    # 鐢ㄦ埛鍚�
-    username: xxx@qq.com
-    # 鎺堟潈鐮� (璁剧疆 - 璐︽埛 - POP3/SMTP鏈嶅姟)
-    password: xxx
-    # QQ閭鍔犲瘑绔彛锛屼笉鍚岄偖绠辩殑绔彛涓嶄竴鏍�
-    port: 465
-    properties:
-      mail:
-        smtp:
-          socketFactory:
-            class: javax.net.ssl.SSLSocketFactory
-          ssl:
-            trust: smtp.qq.com
-          # 鏄惁闇�瑕佺敤鎴疯璇�
-          auth: true
-          starttls:
-            # 鍚敤TLS鍔犲瘑
-            enable: true
-            required: true
-    # 浼犺緭鍗忚 starttls.enable = true 鏃朵负 smtps
-    protocol: smtps
-    debug: true
-
 redisson:
   # 绾跨▼姹犳暟閲�
   threads: 4
@@ -184,3 +156,25 @@
     timeout: 3000
     # 鍙戝竷鍜岃闃呰繛鎺ユ睜澶у皬
     subscriptionConnectionPoolSize: 50
+
+--- # mail 閭欢鍙戦��
+mail:
+  enabled: false
+  host: smtp.163.com
+  port: 465
+  # 鏄惁闇�瑕佺敤鎴峰悕瀵嗙爜楠岃瘉
+  auth: true
+  # 鍙戦�佹柟锛岄伒寰猂FC-822鏍囧噯
+  from: xxx@163.com
+  # 鐢ㄦ埛鍚嶏紙娉ㄦ剰锛氬鏋滀娇鐢╢oxmail閭锛屾澶剈ser涓簈q鍙凤級
+  user: xxx@163.com
+  # 瀵嗙爜锛堟敞鎰忥紝鏌愪簺閭闇�瑕佷负SMTP鏈嶅姟鍗曠嫭璁剧疆瀵嗙爜锛岃鎯呮煡鐪嬬浉鍏冲府鍔╋級
+  pass: xxxxxxxxxx
+  # 浣跨敤 STARTTLS瀹夊叏杩炴帴锛孲TARTTLS鏄绾枃鏈�氫俊鍗忚鐨勬墿灞曘��
+  starttlsEnable: true
+  # 浣跨敤SSL瀹夊叏杩炴帴
+  sslEnable: true
+  # SMTP瓒呮椂鏃堕暱锛屽崟浣嶆绉掞紝缂虹渷鍊间笉瓒呮椂
+  timeout: 0
+  # Socket杩炴帴瓒呮椂鍊硷紝鍗曚綅姣锛岀己鐪佸�间笉瓒呮椂
+  connectionTimeout: 0
diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml
index 6a28bcc..4966a41 100644
--- a/ruoyi-admin/src/main/resources/application-prod.yml
+++ b/ruoyi-admin/src/main/resources/application-prod.yml
@@ -159,3 +159,25 @@
     timeout: 3000
     # 鍙戝竷鍜岃闃呰繛鎺ユ睜澶у皬
     subscriptionConnectionPoolSize: 50
+
+--- # mail 閭欢鍙戦��
+mail:
+  enabled: false
+  host: smtp.163.com
+  port: 465
+  # 鏄惁闇�瑕佺敤鎴峰悕瀵嗙爜楠岃瘉
+  auth: true
+  # 鍙戦�佹柟锛岄伒寰猂FC-822鏍囧噯
+  from: xxx@163.com
+  # 鐢ㄦ埛鍚嶏紙娉ㄦ剰锛氬鏋滀娇鐢╢oxmail閭锛屾澶剈ser涓簈q鍙凤級
+  user: xxx@163.com
+  # 瀵嗙爜锛堟敞鎰忥紝鏌愪簺閭闇�瑕佷负SMTP鏈嶅姟鍗曠嫭璁剧疆瀵嗙爜锛岃鎯呮煡鐪嬬浉鍏冲府鍔╋級
+  pass: xxxxxxxxxx
+  # 浣跨敤 STARTTLS瀹夊叏杩炴帴锛孲TARTTLS鏄绾枃鏈�氫俊鍗忚鐨勬墿灞曘��
+  starttlsEnable: true
+  # 浣跨敤SSL瀹夊叏杩炴帴
+  sslEnable: true
+  # SMTP瓒呮椂鏃堕暱锛屽崟浣嶆绉掞紝缂虹渷鍊间笉瓒呮椂
+  timeout: 0
+  # Socket杩炴帴瓒呮椂鍊硷紝鍗曚綅姣锛岀己鐪佸�间笉瓒呮椂
+  connectionTimeout: 0
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index fd6a999..7f0e384 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -128,6 +128,11 @@
         </dependency>
 
         <dependency>
+            <groupId>com.sun.mail</groupId>
+            <artifactId>jakarta.mail</artifactId>
+        </dependency>
+
+        <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
@@ -157,12 +162,6 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>lock4j-redisson-spring-boot-starter</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>javax.mail</artifactId>
-            <version>${mail.version}</version>
         </dependency>
 
     </dependencies>
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/email/MailUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/email/MailUtils.java
index 92fa89a..32a3f82 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/email/MailUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/email/MailUtils.java
@@ -38,13 +38,13 @@
     /**
      * 鑾峰彇閭欢鍙戦�佸疄渚� (鑷畾涔夊彂閫佷汉浠ュ強鎺堟潈鐮�)
      *
-     * @param username 鍙戦�佷汉
-     * @param password 鎺堟潈鐮�
+     * @param user 鍙戦�佷汉
+     * @param pass 鎺堟潈鐮�
      */
-    public static MailAccount getMailAccount(String username, String password) {
-        ACCOUNT.setFrom(StringUtils.blankToDefault(username, ACCOUNT.getUser()));
-        ACCOUNT.setUser(StringUtils.blankToDefault(username, ACCOUNT.getUser()));
-        ACCOUNT.setPass(StringUtils.blankToDefault(password, ACCOUNT.getPass()));
+    public static MailAccount getMailAccount(String from, String user, String pass) {
+        ACCOUNT.setFrom(StringUtils.blankToDefault(from, ACCOUNT.getFrom()));
+        ACCOUNT.setUser(StringUtils.blankToDefault(user, ACCOUNT.getUser()));
+        ACCOUNT.setPass(StringUtils.blankToDefault(pass, ACCOUNT.getPass()));
         return ACCOUNT;
     }
 
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/MailController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/MailController.java
index 53f130f..74e9e33 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/MailController.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/MailController.java
@@ -3,6 +3,8 @@
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.utils.email.MailUtils;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
@@ -14,41 +16,34 @@
 
 
 /**
- * 娴嬭瘯閭欢鍙戦�� Controller
+ * 閭欢鍙戦�佹渚�
  *
  * @author Michelle.Chung
  */
 @Validated
-@Api(value = "閭欢鎺у埗鍣�", tags = {"娴嬭瘯閭欢鍙戦��"})
+@Api(value = "閭欢鍙戦�佹渚�", tags = {"閭欢鍙戦�佹渚�"})
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 @RequestMapping("/demo/mail")
 @RestController
 public class MailController {
 
-    /**
-     * 鍙戦�侀偖浠�
-     *
-     * @param to      鎺ユ敹浜�
-     * @param subject 鏍囬
-     * @param text    鍐呭
-     */
+    @ApiOperation("鍙戦�侀偖浠�")
     @GetMapping("/sendSimpleMessage")
-    public R<Void> sendSimpleMessage(String to, String subject, String text) {
-        MailUtils.send(to, subject, text, false);
-        return R.ok("鎿嶄綔鎴愬姛");
+    public R<Void> sendSimpleMessage(@ApiParam("鎺ユ敹浜�") String to,
+                                     @ApiParam("鏍囬") String subject,
+                                     @ApiParam("鍐呭") String text) {
+        MailUtils.sendText(to, subject, text);
+        return R.ok();
     }
 
-    /**
-     * 鍙戦�侀偖浠讹紙甯﹂檮浠讹級
-     *
-     * @param to      鎺ユ敹浜�
-     * @param subject 鏍囬
-     * @param text    鍐呭
-     */
+    @ApiOperation("鍙戦�侀偖浠讹紙甯﹂檮浠讹級")
     @GetMapping("/sendMessageWithAttachment")
-    public R<Void> sendMessageWithAttachment(String to, String subject, String text, String filePath) {
-        MailUtils.send(to, subject, text, false, new File(filePath));
-        return R.ok("鎿嶄綔鎴愬姛");
+    public R<Void> sendMessageWithAttachment(@ApiParam("鎺ユ敹浜�") String to,
+                                             @ApiParam("鏍囬") String subject,
+                                             @ApiParam("鍐呭") String text,
+                                             @ApiParam("闄勪欢璺緞") String filePath) {
+        MailUtils.sendText(to, subject, text, new File(filePath));
+        return R.ok();
     }
 
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MailConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MailConfig.java
index d4ff8a7..20769aa 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MailConfig.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/MailConfig.java
@@ -6,8 +6,6 @@
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import javax.annotation.Resource;
-
 /**
  * JavaMail 閰嶇疆
  *
@@ -16,23 +14,21 @@
 @Configuration
 public class MailConfig {
 
-    @Resource
-    private MailProperties mailProperties;
-
-    /**
-     * 鍒濆鍖� JavaMailSender
-     */
     @Bean
-    @ConditionalOnProperty(value = "spring.mail.enabled", havingValue = "true")
-    public MailAccount mailAccount() {
+    @ConditionalOnProperty(value = "mail.enabled", havingValue = "true")
+    public MailAccount mailAccount(MailProperties mailProperties) {
         MailAccount account = new MailAccount();
-        account.setFrom(mailProperties.getUsername());
-        account.setUser(mailProperties.getUsername());
-        account.setPass(mailProperties.getPassword());
+        account.setHost(mailProperties.getHost());
         account.setPort(mailProperties.getPort());
         account.setAuth(mailProperties.getAuth());
-        account.setDebug(mailProperties.getDebug());
+        account.setFrom(mailProperties.getFrom());
+        account.setUser(mailProperties.getUser());
+        account.setPass(mailProperties.getPass());
+        account.setSocketFactoryPort(mailProperties.getPort());
         account.setStarttlsEnable(mailProperties.getStarttlsEnable());
+        account.setSslEnable(mailProperties.getSslEnable());
+        account.setTimeout(mailProperties.getTimeout());
+        account.setConnectionTimeout(mailProperties.getConnectionTimeout());
         return account;
     }
 
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/MailProperties.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/MailProperties.java
index ce2103f..66d3698 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/MailProperties.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/MailProperties.java
@@ -1,7 +1,6 @@
 package com.ruoyi.framework.config.properties;
 
 import lombok.Data;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
@@ -12,7 +11,7 @@
  */
 @Data
 @Component
-@ConfigurationProperties(prefix = "spring.mail")
+@ConfigurationProperties(prefix = "mail")
 public class MailProperties {
 
     /**
@@ -21,45 +20,52 @@
     private String enabled;
 
     /**
-     * 閭欢鏈嶅姟鍦板潃
+     * SMTP鏈嶅姟鍣ㄥ煙鍚�
      */
     private String host;
 
     /**
-     * 鐢ㄦ埛鍚�
-     */
-    private String username;
-
-    /**
-     * 鎺堟潈鐮� (璁剧疆 - 璐︽埛 - POP3/SMTP鏈嶅姟)
-     */
-    private String password;
-
-    /**
-     * 閭鍔犲瘑绔彛锛屼笉鍚岄偖绠辩殑绔彛涓嶄竴鏍�
+     * SMTP鏈嶅姟绔彛
      */
     private Integer port;
 
     /**
-     * 鏄惁闇�瑕佺敤鎴疯璇�
+     * 鏄惁闇�瑕佺敤鎴峰悕瀵嗙爜楠岃瘉
      */
-    @Value("${spring.mail.properties.mail.smtp.auth}")
     private Boolean auth;
 
     /**
-     * 鏄惁鍚敤TLS鍔犲瘑
+     * 鐢ㄦ埛鍚�
      */
-    @Value("${spring.mail.properties.mail.smtp.starttls.enable}")
-    private Boolean starttlsEnable;
-
-    @Value("${spring.mail.properties.mail.smtp.ssl.trust}")
-    private String sslTrust;
-
-    private Boolean debug;
+    private String user;
 
     /**
-     * 浼犺緭鍗忚 starttls.enable = true 鏃朵负 smtps
+     * 瀵嗙爜
      */
-    private String protocol;
+    private String pass;
 
+    /**
+     * 鍙戦�佹柟锛岄伒寰猂FC-822鏍囧噯
+     */
+    private String from;
+
+    /**
+     * 浣跨敤 STARTTLS瀹夊叏杩炴帴锛孲TARTTLS鏄绾枃鏈�氫俊鍗忚鐨勬墿灞曘�傚畠灏嗙函鏂囨湰杩炴帴鍗囩骇涓哄姞瀵嗚繛鎺ワ紙TLS鎴朣SL锛夛紝 鑰屼笉鏄娇鐢ㄤ竴涓崟鐙殑鍔犲瘑閫氫俊绔彛銆�
+     */
+    private Boolean starttlsEnable;
+
+    /**
+     * 浣跨敤 SSL瀹夊叏杩炴帴
+     */
+    private Boolean sslEnable;
+
+    /**
+     * SMTP瓒呮椂鏃堕暱锛屽崟浣嶆绉掞紝缂虹渷鍊间笉瓒呮椂
+     */
+    private Long timeout;
+
+    /**
+     * Socket杩炴帴瓒呮椂鍊硷紝鍗曚綅姣锛岀己鐪佸�间笉瓒呮椂
+     */
+    private Long connectionTimeout;
 }

--
Gitblit v1.9.3