spring boot 的项目放下小半个月没有更新了,终于闲下来能够开心的接着写啦。
以前咱们配置好mybatis 多数据源的,接下来咱们须要作一个邮件服务。好比你注册的时候,须要输入验证码来校验。这个验证码就能够经过邮件来发送。固然如今验证码大部分都是经过短信,单邮件有时候也是必不可少的。因此咱们的spring架手架仍是将邮件服务也搭建起来。下一篇将短信服务也整合进来。
好了,言归正传。搭建邮件服务没有接触可能会以为很麻烦或者单机环境测试环境都实现不了。以为没有邮件服务。其实咱们我的使用的话,是能够作到的。qq邮箱,网易邮箱均可以的。我这里使用的是QQ邮箱。网上有不少相关的教程。html
登陆QQ邮箱,点击设置 -->帐户 能够找到 下图这个。java
须要开通 POP3/SMTP服务。开通这个后,会生成一个秘钥。这个秘钥咱们待会会在项目中用到。拿小本本记下来哈哈。linux
邮箱准备好了,咱们就开始咱们的项目吧。
首先在pom.xml 文件中添加依赖git
<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层和controller 层。
在service 包下建立一个MailService 和MailServiceImpl github
MailServiceImpl 中代码spring
@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类。代码以下:segmentfault
@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"; } }
能够看到就一个发送的接口。很简单,参数传过来接收人的邮箱就行了。springboot
# 测试
到此为止,咱们邮件服务的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/...
后续加油♡
欢迎你们关注我的公众号 "程序员爱酸奶"
分享各类学习资料,包含java,linux,大数据等。资料包含视频文档以及源码,同时分享本人及投递的优质技术博文。
若是你们喜欢记得关注和分享哟❤
本文由博客一文多发平台 OpenWrite 发布!