Redis缓存穿透、击穿、雪崩问题及解决方法
Spring Cache的使用–快速上手篇
分页查询–Java项目实战篇
全局异常处理–Java实战项目篇
该系列文章持续更新,更多的文章请点击我的主页查看哦!
目录
系列文章目录
文章目录
前言
一、开通服务
二、配置文件编写
三、编写工具类
四、实现发送邮件
五、效果图
六、定时发送邮件
6.1 @Scheduled()注解
6.2 @EnableScheduling注解
总结
在我们做项目时,有些需求需要通知其他人。比如在手机号获取验证码登录时,会发送短信给该用户去接收验证码从而进行身份确认进行安全登录。但有些时候是需要进行群发消息通知用户的,这个过程肯定不是认为的去发送,所以我们就用java来实现通知用户的邮件发送功能。
至于为什么要发送QQ邮件通知用户,而不是使用短信等方式?想必对这方面有些了解的就知道短信服务是要开通服务的,就是需要交钱的(这个钱是根据具体发送短信的条数算的),这里对于收钱的我们就不演示了。都这么说了,大家肯定猜到了QQ邮件是免费的!没错啊,你没有听错,真的是免费的。很适合在校大学生在写项目时运用,毕竟白嫖才是最香的嘛!
所以这篇文章就来告诉大家怎么去使用java实现邮件发送和定时发送的功能。看完这篇文章后大家就可以使用java代码给自己的好朋友发送邮件,在好朋友面前展现自己的食力啦!
在这里第一步需要进入QQ邮箱登录自己的邮箱账号去免费开通服务。没错,这个开通是免费的,大家可以放心开通。
第一步:在登录自己的QQ邮箱后,点击设置------》点击账户。具体操作如下图所示:
第二步:下滑找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务点击开通,由于我已经开通过了,这里显示已开通的样子。如下图所示:
注意:这里会给一个秘钥(就是开通后显示的一串英文),记得自己保存起来,在编写java代码时需要用到。
这里我用properties编写,配置的是发送邮件人的信息。
#QQ邮箱邮件发送服务配置(固定写法)
spring.mail.host=smtp.qq.com
spring.mail.port=587
# 配置个人QQ账户和密码(密码是加密后的授权码)
spring.mail.username=这里是开通服务的邮箱号
spring.mail.password=这里是刚才开通服务的秘钥
准备工作做完了,现在就需要我们编写工具类来实现发送了。当然在发送邮件之前别忘了导入spring提供的邮箱服务依赖。
org.springframework.boot
spring-boot-starter-mail
导入依赖后就可以编写工具类了,在utils包下编写邮箱工具类。
1.首先要注入JavaMailSenderImpl发送邮件类,需要调用该类的send方法用来发送邮件。
2.发送的信息要封装到SimpleMailMessage()对象中。包括发送者、接受者、内容标题、内容。这四个部分。由于发送是需要秘钥的,所以刚才开通服务的邮件就可以作为发送者。接受者、内容标题、内容都可以作为参数传递过来。
3.这里的mailfrom就是使用@value注解赋值配置文件刚才配置的邮箱号。就是发送的邮箱号。
代码如下:
@Component
public class MailUtils {
@Autowired
private JavaMailSenderImpl mailSender;
@Value("${spring.mail.username}")
private String mailfrom;
// 发送简单邮件
public void sendSimpleEmail(String mailto, String title, String content) {
// 定制邮件发送内容
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(mailfrom);
message.setTo(mailto);
message.setSubject(title);
message.setText(content);
// 发送邮件
mailSender.send(message);
}
}
工具类已经写好了,我们就可以调用该方法传递参数发送邮件了。
@Autowired
private MailUtils mailUtils;
// mailto 发送给谁?
private String mailto="";
@GetMapping("/email")
public void sendEmail(){
// 定制邮件内容
StringBuffer content = new StringBuffer();
content.append("心态还需努力呀~").append("\n");
//三个参数、1.接收者 2.邮件标题 3.发送的内容
mailUtils.sendSimpleEmail(接收者,邮件标题,发送的内容);
}
这里为了展示效果,我就自己给自己发送一个邮件:
当访问Controller接口时,这里就接收到我自己给自己发送过来的邮件。
定时发送需要在发送的方法上加上@Scheduled()注解
@Scheduled()参数可以是这样的格式:
里面有6个参数:
从左到右用空格隔开分别是:秒 分 时 日 月 周 年(可省略)
第一个位置:Seconds 秒:区间 0-59 秒,代表一分钟内的秒数。
第二个位置:Minutes 分:区间 0-59 分,代表一小时内的分钟数。
第三个位置:Hours 时:区间 0-23 时,代表一天中的小时数。
第四个位置:Day of month 日:区间 1-31 (?根据每月有多少天来),代表一月中的多少号。
第五个位置:Month 月:区间 1-12 ,代表一年中的月份。
第六个位置:Day of week 周:区间 1-7或者英文星期的缩写,代表星期几。
//表示每月二号的十点定时执行下面的方法。所以就可实现定时发送功能。
@Scheduled(cron = "0 0 10 2 * ?")
然后在启动类上加上@EnableScheduling注解
@EnableScheduling // 开启定时任务注解功能支持
到这里发送邮件的功能的代码实现和操作步骤就都演示完了,赶快去给你的好朋友展示自己的食力去吧。该功能整体没有什么特别难以理解的点。是实现自己的练习项目,大作业不错的一个功能可选。也可作为毕设的一部分。大家赶快练起来吧。
最后也是写文章快一年了,我的朋友数量也是突破了1万,在这过程中有和我一起走过来的小伙伴,也有在半路就退出的,没有在继续写文章。可能也是由于生活比较的忙碌。大家都是在以不同的方式学习,生活。在这里感谢大家对我的陪伴与支持,以后还会继续分享知识点和大家一起讨论,交流。
看到这里了,如果这篇文章对你有帮助的话可以给我点个免费的赞在离开哦!