springboot怎么实现邮件服务
springboot怎么实现邮件服务
这篇文章主要介绍了springboot怎么实现邮件服务的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇springboot怎么实现邮件服务文章都会有所收获,下面我们一起来看看吧。
前言
spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写啦。
之前我们配置好mybatis 多数据源的,接下来我们需要做一个邮件服务。比如你注册的时候,需要输入验证码来校验。这个验证码就可以通过邮件来发送。当然现在验证码大部分都是通过短信,单邮件有时候也是必不可少的。所以我们的spring架手架还是将邮件服务也搭建起来。下一篇将短信服务也整合进来。
好了,言归正传。搭建邮件服务没有接触可能会觉得很麻烦或者单机环境测试环境都实现不了。觉得没有邮件服务。其实我们个人使用的话,是可以做到的。qq邮箱,网易邮箱都可以的。我这里使用的是QQ邮箱。
邮箱服务器准备
登录QQ邮箱,点击设置 -->账户 可以找到 下图这个。
需要开通 POP3/SMTP服务。开通这个后,会生成一个秘钥。这个秘钥我们待会会在项目中用到。拿小本本记下来哈哈。
添加依赖和配置
邮箱准备好了,我们就开始我们的项目吧。
首先在pom.xml 文件中添加依赖
然后在application.proteries 文件中添加配置,改成自己的邮箱。password 就是刚刚生成的那个秘钥。QQ邮箱的服务器地址是:smtp.qq.com 。网易的大家可以搜一下。
spring.mail.host=smtp.qq.comspring.mail.username=1186154608@qq.comspring.mail.password=abcdefgqazqazspring.mail.default-encoding=UTF-8mail.from=1186154608@qq.com
Service 层
配置信息都好了之后,我们就可以来使用啦。这里我们暂时没有涉及到数据库,就直接写Service层和controller 层。
在service 包下创建一个MailService 和MailServiceImpl
MailServiceImpl 中代码
@Service@Slf4jpublicclassMailServiceImplimplementsMailService{@AutowiredprivateJavaMailSendermailSender;@Value("${mail.from}")privateStringmailFrom;@OverridepublicvoidsendSimpleMail(StringmailTo){SimpleMailMessagemessage=newSimpleMailMessage();message.setFrom(mailFrom);message.setTo(mailTo);message.setSubject("simplemail");message.setText("helloworld");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)publicStringsendMail(@RequestParam(value="userName")StringuserName){mailService.sendSimpleMail(userName);return"success";}
}
```
可以看到就一个发送的接口。很简单,参数传过来接收人的邮箱就好了。
# 测试
到此为止,我们邮件服务的demo 就已经搭建好了。我们接下来测试测试一下。我们启动项目。然后调接口
http://localhost:9090/zlflovemm/mail/send?userName=1303123974@qq.com
提示已经发送成功啦,我们进邮箱看下我们发送情况。可以看到是发送成功了。所以说明我们的邮件服务搭建成功了。
所以现在看来,springboot 集成邮件服务是非常简单的,配置邮件服务器,就可以直接使用啦。
发送附件
有时候我们发送邮件不仅仅发送内容,还需要发送附件,那怎么实现呢。其实也很简单。那些配置还是不变。我们在service 层。写一个sendMail方法。如下
@OverridepublicvoidsendMail(StringmailTo){MimeMessagemessage=mailSender.createMimeMessage();MimeMessageHelperhelper=null;try{helper=newMimeMessageHelper(message,true);helper.setFrom(mailFrom);helper.setTo(mailTo);helper.setSubject("simplemail");helper.setText("helloworld",true);FileSystemResourcefile=newFileSystemResource(newFile("E:\\myself\\test.xls"));StringfileName=file.getFilename();helper.addAttachment(fileName,file);mailSender.send(message);log.info("邮件已经发送");}catch(MessagingExceptione){log.error("{}",e);}}
可以看到和我们开始测试的时候,有一点不同。这里先
MimeMessagemessage=mailSender.createMimeMessage();
MimeMessage 比 SimpleMailMessage 功能更强大,可以发送附件,也可以将内容转成html 格式发送。所以一般实际使用的时候都使用MimeMessage。
另外发送附件,还需要借助MimeMessageHelper 。MimeMessageHelper是辅助MimeMessage的。
helper.setFrom(mailFrom);helper.setTo(mailTo);helper.setSubject("simplemail");helper.setText("helloworld",true);
这些和前面是一样的,发件人收件人,主题,内容。
helper.addAttachment()是添加附件的。
好了,接下我们测试一下。可以看到发送的邮件是有附件的。证明没问题。
关于“springboot怎么实现邮件服务”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“springboot怎么实现邮件服务”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道。
推荐阅读
-
vue动态添加删除输入框(springboot vue怎么让数据库显示出来)
springbootvue怎么让数据库显示出来?一般情况下是前端调阅后端接口,来获取到数据库的数据,后端哪里会把数据库的数据整理...
-
springboot实现基于aop的切面日志
本文实例为大家分享了springboot实现基于aop的切面日志的具体代码,供大家参考,具体内容如下通过aop的切面方式实现日志...
-
SpringBoot定时任务功能怎么实现
-
SpringBoot中的@Import注解怎么使用
-
SpringBoot整合Lombok及常见问题怎么解决
SpringBoot整合Lombok及常见问题怎么解决这篇文章主要...
-
springboot图片验证码功能模块怎么实现
springboot图片验证码功能模块怎么实现本篇内容主要讲解“s...
-
Springboot+SpringSecurity怎么实现图片验证码登录
-
SpringBoot注解的知识点有哪些
SpringBoot注解的知识点有哪些这篇“SpringBoot注...
-
SpringBoot2.x中management.security.enabled=false无效怎么解决
SpringBoot2.x中management.security.enabled=false无效怎么解决...
-
springboot怎么禁用某项健康检查
springboot怎么禁用某项健康检查今天小编给大家分享一下sp...
-
vue动态添加删除输入框(springboot vue怎么让数据库显示出来)
springbootvue怎么让数据库显示出来?一般情况下是前端调阅后端接口,来获取到数据库的数据,后端哪里会把数据库的数据整理...
-
springboot实现基于aop的切面日志
本文实例为大家分享了springboot实现基于aop的切面日志的具体代码,供大家参考,具体内容如下通过aop的切面方式实现日志...
-
SpringBoot定时任务功能怎么实现
-
SpringBoot中的@Import注解怎么使用
-
SpringBoot整合Lombok及常见问题怎么解决
SpringBoot整合Lombok及常见问题怎么解决这篇文章主要...
-
springboot图片验证码功能模块怎么实现
springboot图片验证码功能模块怎么实现本篇内容主要讲解“s...
-
Springboot+SpringSecurity怎么实现图片验证码登录
-
SpringBoot注解的知识点有哪些
SpringBoot注解的知识点有哪些这篇“SpringBoot注...
-
SpringBoot2.x中management.security.enabled=false无效怎么解决
SpringBoot2.x中management.security.enabled=false无效怎么解决...
-
springboot怎么禁用某项健康检查
springboot怎么禁用某项健康检查今天小编给大家分享一下sp...
-
vue动态添加删除输入框(springboot vue怎么让数据库显示出来)
springbootvue怎么让数据库显示出来?一般情况下是前端调阅后端接口,来获取到数据库的数据,后端哪里会把数据库的数据整理...
-
springboot实现基于aop的切面日志
本文实例为大家分享了springboot实现基于aop的切面日志的具体代码,供大家参考,具体内容如下通过aop的切面方式实现日志...
-
SpringBoot定时任务功能怎么实现
-
SpringBoot中的@Import注解怎么使用
-
SpringBoot整合Lombok及常见问题怎么解决
SpringBoot整合Lombok及常见问题怎么解决这篇文章主要...
-
springboot图片验证码功能模块怎么实现
springboot图片验证码功能模块怎么实现本篇内容主要讲解“s...
-
Springboot+SpringSecurity怎么实现图片验证码登录
-
SpringBoot注解的知识点有哪些
SpringBoot注解的知识点有哪些这篇“SpringBoot注...
-
SpringBoot2.x中management.security.enabled=false无效怎么解决
SpringBoot2.x中management.security.enabled=false无效怎么解决...
-
springboot怎么禁用某项健康检查
springboot怎么禁用某项健康检查今天小编给大家分享一下sp...