SpringBoot利用线程池发送邮件

mac2024-05-23  32

1. 创建线程池

//创建线程池 @Bean public ThreadPoolTaskExecutor createThreadPoolTaskExecutor() { ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor(); threadPoolTaskExecutor.setCorePoolSize(5); threadPoolTaskExecutor.setMaxPoolSize(10); return threadPoolTaskExecutor; }

2. 配置邮箱信息

spring: mail: host: smtp.qq.com port: 587 #qq邮箱465、587 default-encoding: UTF-8 #qq邮箱 protocol: smtp username: xxxxxx@qq.com password: xxxxxxxxx properties: mail: smtp: auth: true timeout: 25000

3. 编码

@Component public class EmailConfig { /** * 邮箱地址 */ @Value("${spring.mail.username}") private String from; /** * 密码 */ @Value("${spring.mail.password}") public String password; /** * 协议 */ @Value("${spring.mail.protocol}") public String protocol; /** * 端口 */ @Value("${spring.mail.port}") public String port; /** * 服务器地址 */ @Value("${spring.mail.host}") public String host; public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getProtocol() { return protocol; } public void setProtocol(String protocol) { this.protocol = protocol; } public String getPort() { return port; } public void setPort(String port) { this.port = port; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } } ###发送代码### @Autowired EmailConfig emailConfig; @Autowired private JavaMailSender mailSender; @Autowired MailHistoryDao mailHistoryDao; @Autowired TaskExecutor taskExecutor; public void sendMail (final String recipient, final String subject, final String content, final String processInstanceId) { taskExecutor.execute(new Runnable() { @Override public void run() { final boolean result = sendSimpleMail(recipient, subject, content); final MailHistory mailHistory = new MailHistory(); mailHistory.setRecipient(recipient); mailHistory.setSender(emailConfig.getFrom()); mailHistory.setSubject(subject); mailHistory.setContent(content); mailHistory.setCreateTime(new Date()); mailHistory.setProcessInstanceId(processInstanceId); mailHistory.setStatus(result); mailHistoryDao.add(mailHistory); } }); } /** * @param recipient 收件人 * @param subject 主题 * @param content 内容 * @return */ public boolean sendSimpleMail(final String recipient, final String subject, final String content) { try { logger.info("邮件发送:收件人" + recipient + ", 主题:" + subject); final SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(emailConfig.getFrom()); message.setTo(recipient); message.setSubject(subject); message.setText(content); message.setSentDate(new Date()); mailSender.send(message); logger.info("邮件发送成功"); return true; } catch (final Exception e) { logger.error("邮件发送失败", e); return false; } }

 

最新回复(0)