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,页面配置