五、springboot 简单优雅是实现邮件服务
前言
spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写啦。
之前我们配置好mybatis 多数据源的,接下来我们需要做一个邮件服务。比如你注册的时候,需要输入验证码来校验。这个验证码就可以通过邮件来发送。当然现在验证码大部分都是通过短信,单邮件有时候也是必不可少的。所以我们的spring架手架还是将邮件服务也搭建起来。下一篇将短信服务也整合进来。
好了,言归正传。搭建邮件服务没有接触可能会觉得很麻烦或者单机环境测试环境都实现不了。觉得没有邮件服务。其实我们个人使用的话,是可以做到的。qq邮箱,网易邮箱都可以的。我这里使用的是QQ邮箱。网上有很多相关的教程。
邮箱服务器准备
登录QQ邮箱,点击设置 -->账户 可以找到 下图这个。
需要开通 POP3/SMTP服务。开通这个后,会生成一个秘钥。这个秘钥我们待会会在项目中用到。拿小本本记下来哈哈。
添加依赖和配置
邮箱准备好了,我们就开始我们的项目吧。
首先在pom.xml 文件中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
然后在application.proteries 文件中添加配置,改成自己的邮箱。password 就是刚刚生成的那个秘钥。QQ邮箱的服务器地址是:smtp.qq.com 。网易的大家可以搜一下。
spring.mail.host=smtp.qq.com
spring.mail.username=1186154608@qq.com
spring.mail.password=abcdefgqazqaz
spring.mail.default-encoding=UTF-8
mail.from=1186154608@qq.com
Service 层
配置信息都好了之后,我们就可以来使用啦。这里我们暂时没有涉及到数据库,就直接写Service层和controller 层。
在service 包下创建一个MailService 和MailServiceImpl
MailServiceImpl 中代码
@Service
@Slf4j
public class MailServiceImpl implements MailService{
@Autowired
private JavaMailSender mailSender;
@Value("${mail.from}")
private String mailFrom;
@Override
public void sendSimpleMail(String mailTo) {
SimpleMailMessage message=new SimpleMailMessage();
message.setFrom(mailFrom);
message.setTo(mailTo);
message.setSubject("simple mail");
message.setText("hello world");
mailSender.send(message);
log.info("邮件已经发送");
}
}
这里我们就先简单的测试一下看看邮件能不能发送。mailFrom 是发件人,mailTo 是收件人。message.setSubject()设置邮件主题。message.setText()设置邮件内容。
mailSender.send(message)是发送短信。
controller层
我们创建一个MailController类。代码如下:
@RestController
@RequestMapping("/mail")
public class MailController {
@Autowired
private MailService mailService;
@RequestMapping(value = "/send",method = RequestMethod.GET)
public String sendMail(@RequestParam(value = "userName")String userName){
mailService.sendSimpleMail(userName);
return "success";
}
}
可以看到就一个发送的接口。很简单,参数传过来接收人的邮箱就好了。
测试
到此为止,我们邮件服务的demo 就已经搭建好了。我们接下来测试测试一下。我们启动项目。然后调接口
http://localhost:9090/zlflovemm/mail/send?userName=1303123974@qq.com
提示已经发送成功啦,我们进邮箱看下我们发送情况。可以看到是发送成功了。所以说明我们的邮件服务搭建成功了。
所以现在看来,springboot 集成邮件服务是非常简单的,配置邮件服务器,就可以直接使用啦。
发送附件
有时候我们发送邮件不仅仅发送内容,还需要发送附件,那怎么实现呢。其实也很简单。那些配置还是不变。我们在service 层。写一个sendMail方法。如下
@Override
public void sendMail(String mailTo) {
MimeMessage message=mailSender.createMimeMessage();
MimeMessageHelper helper = null;
try {
helper = new MimeMessageHelper(message, true);
helper.setFrom(mailFrom);
helper.setTo(mailTo);
helper.setSubject("simple mail");
helper.setText("hello world", true);
FileSystemResource file = new FileSystemResource(new File("E:\\myself\\test.xls"));
String fileName = file.getFilename();
helper.addAttachment(fileName, file);
mailSender.send(message);
log.info("邮件已经发送");
} catch (MessagingException e) {
log.error("{}",e);
}
}
可以看到和我们开始测试的时候,有一点不同。这里先
MimeMessage message=mailSender.createMimeMessage();
MimeMessage 比 SimpleMailMessage 功能更强大,可以发送附件,也可以将内容转成html 格式发送。所以一般实际使用的时候都使用MimeMessage。
另外发送附件,还需要借助MimeMessageHelper 。MimeMessageHelper是辅助MimeMessage的。
helper.setFrom(mailFrom);
helper.setTo(mailTo);
helper.setSubject("simple mail");
helper.setText("hello world", true);
这些和前面是一样的,发件人收件人,主题,内容。
helper.addAttachment()是添加附件的。
好了,接下我们测试一下。可以看到发送的邮件是有附件的。证明没问题。
番外
好了,就说这么多啦,今天项目的代码也同步到github 上啦。
github地址:https://github.com/QuellanAn/zlflovemm
后续加油♡
欢迎大家关注个人公众号 "程序员爱酸奶"
分享各种学习资料,包含java,linux,大数据等。资料包含视频文档以及源码,同时分享本人及投递的优质技术博文。
如果大家喜欢记得关注和分享哟❤
五、springboot 简单优雅是实现邮件服务的更多相关文章
- 六、springboot 简单优雅是实现短信服务
前言 上一篇讲了 springboot 集成邮件服务,接下来让我们一起学习下springboot项目中怎么使用短信服务吧. 项目中的短信服务基本上上都会用到,简单的注册验证码,消息通知等等都会用到.所 ...
- 七、springBoot 简单优雅是实现文件上传和下载
前言 好久没有更新spring Boot 这个项目了.最近看了一下docker 的知识,后期打算将spring boot 和docker 结合起来.刚好最近有一个上传文件的工作呢,刚好就想起这个脚手架 ...
- 八、springboot 简单优雅的通过docker-compose 构建
前言 这个项目有一段时间没有更新了,不过我可没有偷懒哟,是偷偷准备了一个大招,现在是时候展示啦哈哈. 我们今天要做的,就是将我们的项目通过docker-compose 构建成镜像运行.为什么要这样做呢 ...
- 五分钟快速搭建 Serverless 免费邮件服务
1. 引言 本文将带你快速基于 Azure Function 和 SendGrid 构建一个免费的Serverless(无服务器)的邮件发送服务,让你感受下Serverless的强大之处. 该服务可以 ...
- 五分钟快速搭建Serverless免费邮件服务
1. 引言 本文将带你快速基于 Azure Function 和 SendGrid 构建一个免费的Serverless(无服务器)的邮件发送服务,让你感受下Serverless的强大之处. 该服务可以 ...
- springboot简单介绍
1.springboot简单介绍 微服务架构 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程. 该框架使用了特定的方 ...
- (转)Springboot邮件服务
springboot仍然在狂速发展,才五个多月没有关注,现在看官网已经到1.5.3.RELEASE版本了.准备慢慢在写写springboot相关的文章,本篇文章使用springboot最新版本1.5. ...
- springboot 邮件服务
springboot仍然在狂速发展,才五个多月没有关注,现在看官网已经到1.5.3.RELEASE版本了.准备慢慢在写写springboot相关的文章,本篇文章使用springboot最新版本1.5. ...
- springboot的邮件服务
作者:纯洁的微笑出处:http://www.ityouknow.com/ 版权归作者所有,转载请注明出处 springboot仍然在狂速发展,才五个多月没有关注,现在看官网已经到1.5.3.RELEA ...
随机推荐
- HDU 6346 整数规划 二分图匹配最优解
整数规划 原来的km+hunger跑法T了, 拿了一个新的板子, 新的写法是将这原来的找新的最小的d放在了上一次的残留图上,从而减小复杂度, 但是个人还不是很理解为什么最小的d下一次出现的位置一定是这 ...
- poj 3259 Wormholes(bellman-ford判断负环)
题目链接:http://poj.org/problem?id=3259 题目就是问你能否回到原点而且时间还倒回去了.题目中有些路中有单向的虫洞能让时间回到过去 所以只要将虫洞这条边的权值赋为负然后再判 ...
- poj 2912 Rochambeau(枚举+带权并查集)
题目链接:http://poj.org/problem?id=2912 题意:多个人玩石头剪刀布分成3组和一个裁判,每一组提前选定了自己出哪个手势,裁判可以随意出什么手势,问是否能够从给出的一系列石头 ...
- 《MySQL实战45讲》学习笔记3——InnoDB为什么采用B+树结构实现索引
索引的作用是提高查询效率,其实现方式有很多种,常见的索引模型有哈希表.有序列表.搜索树等. 哈希表 一种以key-value键值对的方式存储数据的结构,通过指定的key可以找到对应的value. 哈希 ...
- Java 多线程实现接口Runnable和继承Thread区别(转)
Java 多线程实现接口Runnable和继承Thread区别 Java中有两种实现多线程的方式.一是直接继承Thread类,二是实现Runnable接口.那么这两种实现多线程的方式在应用上有什么区别 ...
- (2)RapidJson的详解及使用
本节主要介绍RapidJson是如何使用的. (1)RapidJson是什么 RapidJson是一个跨平台的c++的json的解析器和生成器: 相比较jsoncpp库,RapidJson ...
- Android之MVP设计模式
一.概述 MVP设计模式的前身是MVC,这个无需再议 在安卓工程中MVC对应关系如下: Layout->View : 对应布局文件Activity->Controller,View (其中 ...
- sparkSql使用hive数据源
1.pom文件 <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-lib ...
- Sticks(剪枝+BFS)
Problem Description George took sticks of the same length and cut them randomly until all parts beca ...
- HTML定位——绝对定位和相对定位、固定定位
1.绝对定位 绝对定位指的是通过规定HTML元素在水平和垂直方向上的位置来固定元素,基于绝对定位的元素不会占据空间. 绝对定位的位置声明是相对于已定位的并且包含关系最近的祖先元素.如果当前需要被定为的 ...