diff --git a/pom.xml b/pom.xml
index 71963f204..4fc098f5b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,6 @@
3.5.1
1.3.6
2.3.0
- 1.6.2
3.0.1
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 50e060b62..6be268bf0 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -137,34 +137,6 @@ spring:
# 是否开启ssl
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 @@ redisson:
timeout: 3000
# 发布和订阅连接池大小
subscriptionConnectionPoolSize: 50
+
+--- # mail 邮件发送
+mail:
+ enabled: false
+ host: smtp.163.com
+ port: 465
+ # 是否需要用户名密码验证
+ auth: true
+ # 发送方,遵循RFC-822标准
+ from: xxx@163.com
+ # 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
+ user: xxx@163.com
+ # 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
+ pass: xxxxxxxxxx
+ # 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。
+ 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 6a28bccfb..4966a41e8 100644
--- a/ruoyi-admin/src/main/resources/application-prod.yml
+++ b/ruoyi-admin/src/main/resources/application-prod.yml
@@ -159,3 +159,25 @@ redisson:
timeout: 3000
# 发布和订阅连接池大小
subscriptionConnectionPoolSize: 50
+
+--- # mail 邮件发送
+mail:
+ enabled: false
+ host: smtp.163.com
+ port: 465
+ # 是否需要用户名密码验证
+ auth: true
+ # 发送方,遵循RFC-822标准
+ from: xxx@163.com
+ # 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
+ user: xxx@163.com
+ # 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
+ pass: xxxxxxxxxx
+ # 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。
+ starttlsEnable: true
+ # 使用SSL安全连接
+ sslEnable: true
+ # SMTP超时时长,单位毫秒,缺省值不超时
+ timeout: 0
+ # Socket连接超时值,单位毫秒,缺省值不超时
+ connectionTimeout: 0
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index fd6a999fe..7f0e384f9 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -127,6 +127,11 @@
hutool-extra
+
+ com.sun.mail
+ jakarta.mail
+
+
org.projectlombok
lombok
@@ -159,12 +164,6 @@
lock4j-redisson-spring-boot-starter
-
- com.sun.mail
- javax.mail
- ${mail.version}
-
-
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 92fa89ae4..32a3f8252 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 @@ public class MailUtils {
/**
* 获取邮件发送实例 (自定义发送人以及授权码)
*
- * @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 53f130f26..74e9e3398 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 @@ package com.ruoyi.demo.controller;
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 @@ import java.io.File;
/**
- * 测试邮件发送 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 sendSimpleMessage(String to, String subject, String text) {
- MailUtils.send(to, subject, text, false);
- return R.ok("操作成功");
+ public R 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 sendMessageWithAttachment(String to, String subject, String text, String filePath) {
- MailUtils.send(to, subject, text, false, new File(filePath));
- return R.ok("操作成功");
+ public R 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 d4ff8a7d5..20769aa19 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.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import javax.annotation.Resource;
-
/**
* JavaMail 配置
*
@@ -16,23 +14,21 @@ import javax.annotation.Resource;
@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 ce2103fea..66d3698c3 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 @@ import org.springframework.stereotype.Component;
*/
@Data
@Component
-@ConfigurationProperties(prefix = "spring.mail")
+@ConfigurationProperties(prefix = "mail")
public class MailProperties {
/**
@@ -21,45 +20,52 @@ public class MailProperties {
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;
+ /**
+ * 发送方,遵循RFC-822标准
+ */
+ private String from;
+
+ /**
+ * 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。它将纯文本连接升级为加密连接(TLS或SSL), 而不是使用一个单独的加密通信端口。
+ */
+ private Boolean starttlsEnable;
+
+ /**
+ * 使用 SSL安全连接
+ */
+ private Boolean sslEnable;
+
+ /**
+ * SMTP超时时长,单位毫秒,缺省值不超时
+ */
+ private Long timeout;
+
+ /**
+ * Socket连接超时值,单位毫秒,缺省值不超时
+ */
+ private Long connectionTimeout;
}