SprinBoot~实现使用异步任务优化邮件发送

本文介绍了如何在SpringBoot应用中使用JavaMailSender发送邮件,并通过异步任务优化发送性能。作者分享了个人经验和一份详细的Java开发学习资料,涵盖基础知识到进阶内容,旨在帮助开发者提升技能和减轻学习成本。
摘要由CSDN通过智能技术生成
  1. 编写发送代码

在这里插入图片描述

  • 由于SprigBoot的自动配置以及帮我们注册了JavaMailSenderImpl的Bean, 所以我们可以直接使用它

@Service

public class MailService {

//注入senderImpl

@Autowired

private JavaMailSenderImpl sender;

public void sendSimpleMessage() {

//实例化一个简单邮件

SimpleMailMessage simpleMailMessage = new SimpleMailMessage();

//设置邮件信息

simpleMailMessage.setFrom(“XXXXXX@qq.com”); //发送者QQ

simpleMailMessage.setTo(“XXXXXX@qq.com”); //接收着QQ

simpleMailMessage.setSubject(“紧急通知”); //邮件主题

simpleMailMessage.setText(“开个玩笑,哈哈哈”); //邮件内容

//发送

sender.send(simpleMailMessage);

System.out.println(“[DEBUG]” + simpleMailMessage.getSubject() + “,发送成功”);

}

public void sendMimeMessage() throws MessagingException {

//实例一个复杂邮件

MimeMessage mimeMessage = sender.createMimeMessage();

//true表示如果需要,以多部分模式(支持替代文本,内联元素和附件)

MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);

//信息构建

mimeMessageHelper.setSubject(“爽娃娃”);

mimeMessageHelper.setText(“”, true); //true表示是否以html解析

//发送附件, 第一个参数表示附件名, 第二个参数为附件

mimeMessageHelper.addAttachment(“小哥哥好坏.png”,

new File(“C:\Users\Huawei\Desktop\QQ截图20201118160318.png”));

mimeMessageHelper.setFrom(“XXXXXX@qq.com”);

mimeMessageHelper.setTo(“XXXXXX@qq.com”);

sender.send(mimeMessage);

System.out.println(“[DEBUG]” + mimeMessage.getSubject() + “,发送成功”);

}

}

  1. 编写controller访问

@RestController

public class MailController {

@Autowired

private MailService service;

@RequestMapping(“/send”)

public String send() {

System.out.println(“开始发送时间:” + new Date().toString());

service.sendSimpleMessage();

System.out.println(“返回响应时间:” + new Date().toString());

return “Send OK”;

}

@RequestMapping(“/send2”)

public String send2() {

System.out.println(“开始发送时间:” + new Date().toString());

try {

service.sendMimeMessage();

} catch (MessagingException e) {

e.printStackTrace();

}

System.out.println(“返回响应时间:” + new Date().toString());

return “Send OK”;

}

}

  1. 测试, 运行项目, 访问路径controller

在这里插入图片描述

在这里插入图片描述

  • 邮件发送成功, 但是我们通过DEBUG的时间发现耗时太长

在这里插入图片描述

  • 我们使用异步任务对其进行优化

实现使用异步任务优化邮件发送


  1. 开启异步任务 @EnableAsync //开启异步任务

@SpringBootApplication

@EnableAsync //开启异步任务

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

总的来说,面试是有套路的,一面基础,二面架构,三面个人。

最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友

三面蚂蚁金服成功拿到offer后,他说他累了

三面蚂蚁金服成功拿到offer后,他说他累了

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友**

[外链图片转存中…(img-ZeMHdoK1-1713289772844)]

[外链图片转存中…(img-PeD9uwF4-1713289772845)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值