sms、邮件数据库配置
This commit is contained in:
@@ -19,6 +19,13 @@
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<!-- Common Core -->
|
||||
<dependency>
|
||||
<groupId>org.xyzh</groupId>
|
||||
<artifactId>common-core</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Apache POI for Excel -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
|
||||
@@ -3,11 +3,11 @@ package org.xyzh.common.utils;
|
||||
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.mail.SimpleMailMessage;
|
||||
import org.springframework.mail.javamail.JavaMailSender;
|
||||
import org.springframework.mail.javamail.MimeMessageHelper;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.xyzh.common.config.properties.EmailConfigProperties;
|
||||
|
||||
import jakarta.mail.MessagingException;
|
||||
import jakarta.mail.internet.MimeMessage;
|
||||
@@ -27,8 +27,8 @@ public class EmailUtils {
|
||||
@Autowired
|
||||
private JavaMailSender mailSender;
|
||||
|
||||
@Value("${spring.mail.username:}")
|
||||
private String from;
|
||||
@Autowired
|
||||
private EmailConfigProperties emailConfigProperties;
|
||||
|
||||
/**
|
||||
* 发送简单文本邮件
|
||||
@@ -40,6 +40,7 @@ public class EmailUtils {
|
||||
public boolean sendSimpleEmail(String to, String subject, String content) {
|
||||
try {
|
||||
SimpleMailMessage message = new SimpleMailMessage();
|
||||
String from = emailConfigProperties.getUsername();
|
||||
message.setFrom(from);
|
||||
message.setTo(to);
|
||||
message.setSubject(subject);
|
||||
@@ -66,6 +67,7 @@ public class EmailUtils {
|
||||
MimeMessage message = mailSender.createMimeMessage();
|
||||
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
|
||||
|
||||
String from = emailConfigProperties.getUsername();
|
||||
helper.setFrom(from);
|
||||
helper.setTo(to);
|
||||
helper.setSubject(subject);
|
||||
|
||||
@@ -6,9 +6,10 @@ import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
|
||||
import com.aliyun.teaopenapi.models.Config;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.xyzh.common.config.properties.SmsConfigProperties;
|
||||
|
||||
/**
|
||||
* @description 短信发送工具类 - 支持多种短信服务商
|
||||
@@ -22,29 +23,8 @@ public class SmsUtils {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(SmsUtils.class);
|
||||
|
||||
@Value("${sms.enabled:false}")
|
||||
private boolean enabled;
|
||||
|
||||
@Value("${sms.provider:aliyun}")
|
||||
private String provider;
|
||||
|
||||
@Value("${sms.access-key-id:}")
|
||||
private String accessKeyId;
|
||||
|
||||
@Value("${sms.access-key-secret:}")
|
||||
private String accessKeySecret;
|
||||
|
||||
@Value("${sms.sign-name:红色思政学习平台}")
|
||||
private String signName;
|
||||
|
||||
@Value("${sms.template-code:}")
|
||||
private String templateCode;
|
||||
|
||||
@Value("${sms.region-id:cn-hangzhou}")
|
||||
private String regionId;
|
||||
|
||||
@Value("${sms.endpoint:dysmsapi.aliyuncs.com}")
|
||||
private String endpoint;
|
||||
@Autowired
|
||||
private SmsConfigProperties smsConfigProperties;
|
||||
|
||||
/**
|
||||
* 发送短信验证码
|
||||
@@ -54,16 +34,22 @@ public class SmsUtils {
|
||||
*/
|
||||
public boolean sendVerificationCode(String phone, String code) {
|
||||
// 如果未启用短信服务,使用模拟模式
|
||||
if (!enabled || !StringUtils.hasText(accessKeyId) || !StringUtils.hasText(accessKeySecret)) {
|
||||
String accessKeyId = smsConfigProperties.getAccessKeyId();
|
||||
String accessKeySecret = smsConfigProperties.getAccessKeySecret();
|
||||
|
||||
if (!StringUtils.hasText(accessKeyId) || !StringUtils.hasText(accessKeySecret)) {
|
||||
logger.warn("短信服务未配置或未启用,使用模拟模式");
|
||||
logger.info("【模拟发送】短信验证码,手机号: {}, 验证码: {}", phone, code);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 根据配置的服务商选择发送方式
|
||||
String provider = smsConfigProperties.getProvider();
|
||||
if (provider == null) provider = "aliyun";
|
||||
|
||||
switch (provider.toLowerCase()) {
|
||||
case "aliyun":
|
||||
return sendByAliyun(phone, code);
|
||||
return sendByAliyun(phone, code, smsConfigProperties.getTemplateCodeLogin());
|
||||
case "tencent":
|
||||
logger.warn("腾讯云短信服务暂未实现,使用模拟模式");
|
||||
logger.info("【模拟发送】短信验证码,手机号: {}, 验证码: {}", phone, code);
|
||||
@@ -78,15 +64,16 @@ public class SmsUtils {
|
||||
* 使用阿里云发送短信验证码
|
||||
* @param phone 手机号
|
||||
* @param code 验证码
|
||||
* @param templateCode 短信模板CODE
|
||||
* @return 是否发送成功
|
||||
*/
|
||||
private boolean sendByAliyun(String phone, String code) {
|
||||
private boolean sendByAliyun(String phone, String code, String templateCode) {
|
||||
try {
|
||||
Client client = createAliyunClient();
|
||||
|
||||
SendSmsRequest request = new SendSmsRequest()
|
||||
.setPhoneNumbers(phone)
|
||||
.setSignName(signName)
|
||||
.setSignName(smsConfigProperties.getSignName())
|
||||
.setTemplateCode(templateCode)
|
||||
.setTemplateParam("{\"code\":\"" + code + "\"}");
|
||||
|
||||
@@ -112,9 +99,9 @@ public class SmsUtils {
|
||||
*/
|
||||
private Client createAliyunClient() throws Exception {
|
||||
Config config = new Config()
|
||||
.setAccessKeyId(accessKeyId)
|
||||
.setAccessKeySecret(accessKeySecret)
|
||||
.setEndpoint(endpoint);
|
||||
.setAccessKeyId(smsConfigProperties.getAccessKeyId())
|
||||
.setAccessKeySecret(smsConfigProperties.getAccessKeySecret())
|
||||
.setEndpoint("dysmsapi.aliyuncs.com");
|
||||
return new Client(config);
|
||||
}
|
||||
|
||||
@@ -127,13 +114,19 @@ public class SmsUtils {
|
||||
*/
|
||||
public boolean sendSms(String phone, String templateCode, String templateParam) {
|
||||
// 如果未启用短信服务,使用模拟模式
|
||||
if (!enabled || !StringUtils.hasText(accessKeyId) || !StringUtils.hasText(accessKeySecret)) {
|
||||
String accessKeyId = smsConfigProperties.getAccessKeyId();
|
||||
String accessKeySecret = smsConfigProperties.getAccessKeySecret();
|
||||
|
||||
if (!StringUtils.hasText(accessKeyId) || !StringUtils.hasText(accessKeySecret)) {
|
||||
logger.warn("短信服务未配置或未启用,使用模拟模式");
|
||||
logger.info("【模拟发送】短信,手机号: {}, 模板: {}, 参数: {}", phone, templateCode, templateParam);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 根据配置的服务商选择发送方式
|
||||
String provider = smsConfigProperties.getProvider();
|
||||
if (provider == null) provider = "aliyun";
|
||||
|
||||
switch (provider.toLowerCase()) {
|
||||
case "aliyun":
|
||||
return sendSmsAliyun(phone, templateCode, templateParam);
|
||||
@@ -156,7 +149,7 @@ public class SmsUtils {
|
||||
|
||||
SendSmsRequest request = new SendSmsRequest()
|
||||
.setPhoneNumbers(phone)
|
||||
.setSignName(signName)
|
||||
.setSignName(smsConfigProperties.getSignName())
|
||||
.setTemplateCode(templateCode)
|
||||
.setTemplateParam(templateParam);
|
||||
|
||||
@@ -185,13 +178,19 @@ public class SmsUtils {
|
||||
*/
|
||||
public boolean sendBatchSms(String phones, String templateCode, String templateParam) {
|
||||
// 如果未启用短信服务,使用模拟模式
|
||||
if (!enabled || !StringUtils.hasText(accessKeyId) || !StringUtils.hasText(accessKeySecret)) {
|
||||
String accessKeyId = smsConfigProperties.getAccessKeyId();
|
||||
String accessKeySecret = smsConfigProperties.getAccessKeySecret();
|
||||
|
||||
if (!StringUtils.hasText(accessKeyId) || !StringUtils.hasText(accessKeySecret)) {
|
||||
logger.warn("短信服务未配置或未启用,使用模拟模式");
|
||||
logger.info("【模拟发送】批量短信,手机号: {}, 模板: {}, 参数: {}", phones, templateCode, templateParam);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 根据配置的服务商选择发送方式
|
||||
String provider = smsConfigProperties.getProvider();
|
||||
if (provider == null) provider = "aliyun";
|
||||
|
||||
switch (provider.toLowerCase()) {
|
||||
case "aliyun":
|
||||
return sendBatchSmsAliyun(phones, templateCode, templateParam);
|
||||
@@ -214,7 +213,7 @@ public class SmsUtils {
|
||||
|
||||
SendSmsRequest request = new SendSmsRequest()
|
||||
.setPhoneNumbers(phones)
|
||||
.setSignName(signName)
|
||||
.setSignName(smsConfigProperties.getSignName())
|
||||
.setTemplateCode(templateCode)
|
||||
.setTemplateParam(templateParam);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user