内嵌查询代替LEFT JOIN导致的重复问题以及修改邮件不能发送图片和附件的问题

This commit is contained in:
2025-07-12 15:54:13 +08:00
parent 20edf904bc
commit 43642eeb4d
8 changed files with 559 additions and 74 deletions

View File

@@ -0,0 +1,84 @@
package com.ruoyi.oa.config;
import com.ruoyi.oa.domain.OaEmailAccount;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import java.util.Properties;
/**
* 动态邮件配置类
* 支持根据不同的邮箱账号动态配置邮件发送器
*
* @author ruoyi
*/
@Configuration
public class DynamicMailConfig {
/**
* 根据邮箱账号创建JavaMailSender
*
* @param account 邮箱账号信息
* @return JavaMailSender
*/
public JavaMailSender createMailSender(OaEmailAccount account) {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
// 设置SMTP服务器
mailSender.setHost(account.getSmtpHost());
mailSender.setPort(account.getSmtpPort() == null ? 465 : account.getSmtpPort().intValue());
mailSender.setUsername(account.getEmail());
mailSender.setPassword(account.getPassword());
// 设置邮件属性
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.connectiontimeout", "10000");
props.put("mail.smtp.timeout", "10000");
props.put("mail.smtp.writetimeout", "10000");
props.put("mail.debug", "false");
return mailSender;
}
/**
* 根据邮箱类型获取默认配置
*
* @param type 邮箱类型 0=网易 1=QQ 2=阿里云 3=飞书
* @return 默认配置
*/
public OaEmailAccount getDefaultConfig(int type) {
OaEmailAccount config = new OaEmailAccount();
switch (type) {
case 0: // 网易邮箱
config.setSmtpHost("smtp.163.com");
config.setSmtpPort(465L);
break;
case 1: // QQ邮箱
config.setSmtpHost("smtp.qq.com");
config.setSmtpPort(465L);
break;
case 2: // 阿里云邮箱
config.setSmtpHost("smtp.aliyun.com");
config.setSmtpPort(465L);
break;
case 3: // 飞书邮箱
config.setSmtpHost("smtp.feishu.cn");
config.setSmtpPort(465L);
break;
default:
config.setSmtpHost("smtp.163.com");
config.setSmtpPort(465L);
break;
}
return config;
}
}