SpringBoot:用腾讯企业微信邮箱发送邮件
需求
准备
- 准备发送邮箱的账户和密码写入配置文件
- 引入发送邮箱jar包
- 写异步线程发送固定html格式的邮件
实现代码
配置文件
引入发送邮箱jar包
<dependency> <groupId>com.sun.mail</groupId> <artifactId>jakarta.mail</artifactId> <version>1.6.7</version> </dependency>
代码块 定义一个接口:ISendEmailService
import java.util.List;
public interface ISendEmailService{
/**
* 发送邮件
* @param fromAliasName 别名
* @param to 发送目标
* @param subject 主题
* @param content 内容
* @param attachFileList 附件
*/
void send(String fromAliasName,String to,String subject,String content, List<String> attachFileList);
}
接口实现类:SendEmailServiceImpl
异步线程池配置
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
@Configuration
@EnableAsync
public class ExecutorConfig{
private int corePoolSize = 10;
private int maxPoolSize = 50;
private int queueCapacity = 100;
/**
* 邮件相关的异步
*/
public static final String EMAIL_ASYNC="emailAsync";
@Bean
public Executor emailAsync(){
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(corePoolSize);
executor.setMaxPoolSize(maxPoolSize);
executor.setQueueCapacity(queueCapacity);
executor.setThreadNamePrefix(EMAIL_ASYNC);
// rejection-policy:当pool已经达到max size的时候,如何处理新任务
// CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.initialize();
return executor;
}
}
调用方式
@RestController
@AllArgsConstructor
public class SendEmailController {
@Autowired
private ISendEmailService sendEmailService;
/**
* 发送邮件
*/
@GetMapping("/sendMail")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "发送邮件")
public void 发送sendMail() {
sendEmailService.send("别名","邮件","【审核通过】","内容","附件");
}
结果
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
微信小程序_5,页面配置
