springboot 邮件服务

  今天在看网上学习微服务的时候顺遍看到了一些关于springboot的文章,写的springboot拓展功能就顺遍学习了一下,接下来给大家分享一下springboot封装集成了邮件服务。

  发送邮件应该是网站的必备拓展功能之一,注册验证,忘记密码或者是给用户发送营销信息。正常我们会用JavaMail相关api来写发送邮件的相关代码,但现在springboot提供了一套更简易使用的封装。

简易应用

  1.gradle配置

compile('org.springframework.boot:spring-boot-starter-mail')

  2.编写配置

  我这里用的是qq邮箱发送,使用qq邮箱必须qq邮箱中 设置 >> 账户 >> 把POP3/SMTP服务开启

  

  
  如果用qq邮箱发送这里的password不是邮箱密码,是刚才开启POP3/SMTP服务时生成的链接字符

  properties返回类型是一个Map类型,properties肯定对应的是一些拓展的参数,那个smtp一定是需要开启的

  3.编码实现Text发送

   

   from为发送者

   to为接受者,可以理解为订阅者,这里可以传数组

   subject为标题

   content为内容

   编码测试

   4.编码实现HTML发送

@Override
public void sendHtmlMail(String to, String subject, String content) { MimeMessage message = mailSender.createMimeMessage(); try {
//true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true); mailSender.send(message);
System.out.println("发送成功~");
} catch (MessagingException e) {
e.printStackTrace();
System.out.println("发送失败~");
}
}

    HTML的发送需要借助MimeMessage,MimeMessageHelper的setTest方法提供是否开启html的重装方法。

  5.编码实现发送附件

    

 @Override
public void sendAttachmentsMail(String to, String subject, String content,String path) {
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
FileSystemResource fileSystemResource = new FileSystemResource(new File(path)); String fileName= path.substring(path.lastIndexOf(File.separator));
helper.addAttachment(fileName,fileSystemResource); mailSender.send(message);
System.out.println("发送成功!");
}catch (Exception e){
e.printStackTrace();
System.out.println("发送失败!");
}
}

     可以通过多个addAttachment方法发送多个附件,File.separator是用来分隔同一个路径字符串中的目录

   6.编写实现模板发送

    我们有时候收到的邮件就想一封信一样格式非常优雅,如果我们采用上面那种方式编写HTML字符硬性拼接的话起步很麻烦,所有对于这种需求,我们建议使用模板来处理。

    这里采用的是Thymeleaf来演示

    1.导入build.gradle

compile('org.springframework.boot:spring-boot-starter-thymeleaf')

    2.在resources/templates新建index.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
请点击下面的链接来验证身份<br/>
<a href="#" th:href="@{ http://www.baidu.com/{id} }">激活账号</a>
</body>
</html>

    3.解析模块发送

@Autowired
private TemplateEngine templateEngine; @Test
public void contextLoadsFour(){
Context context = new Context();
context.setVariable("id","110");
String content = templateEngine.process("index",context);
mailService.sendHtmlMail("2752555817@qq.com","Hello",content);
}

    process方法第一个参数对于页面逻辑视图名称

SpringBoot之邮件服务的更多相关文章

  1. Springboot】Springboot整合邮件服务(HTML/附件/模板-QQ、网易)

    介绍 邮件服务是常用的服务之一,作用很多,对外可以给用户发送活动.营销广告等:对内可以发送系统监控报告与告警. 本文将介绍Springboot如何整合邮件服务,并给出不同邮件服务商的整合配置. 如图所 ...

  2. spring-boot(六) 邮件服务

    学习文章来自:springboot(十):邮件服务 简单使用 1.pom包配置 pom包里面添加spring-boot-starter-mail包引用 <dependencies> < ...

  3. springboot系列九,springboot整合邮件服务、整合定时任务调度

    一.整合邮件服务 如果要进行邮件的整合处理,那么你一定需要有一个邮件服务器,实际上 java 本身提供有一套 JavaMail 组件以实现邮件服务器的搭建,但是这个搭建的服务器意义不大,因为你现在搭建 ...

  4. springboot(七)邮件服务

    简单使用 发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息.最早期的时候我们会使用JavaMail相关api来写发送邮件的相关代码,后来spring退出了JavaMai ...

  5. springboot的邮件服务

    作者:纯洁的微笑出处:http://www.ityouknow.com/ 版权归作者所有,转载请注明出处 springboot仍然在狂速发展,才五个多月没有关注,现在看官网已经到1.5.3.RELEA ...

  6. springboot集成邮件服务

    一.前言 Spring Email 抽象的核心是 MailSender 接口,MailSender 的实现能够把 Email 发送给邮件服务器,由邮件服务器实现邮件发送的功能. Spring 自带了一 ...

  7. SpringBoot系列九:SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:SpringBoot 服务整合 2.背景 在进行项目开发的时候经常会遇见以下的几个问题:需要进行邮件发送.定时的任务调 ...

  8. 五、springboot 简单优雅是实现邮件服务

    前言 spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写啦. 之前我们配置好mybatis 多数据源的,接下来我们需要做一个邮件服务.比如你注册的时候,需要输入验证码来校 ...

  9. Springboot 系列(十三)使用邮件服务

    在我们这个时代,邮件服务不管是对于工作上的交流,还是平时的各种邮件通知,都是一个十分重要的存在.Java 从很早时候就可以通过 Java mail 支持邮件服务.Spring 更是对 Java mai ...

随机推荐

  1. 用itemloader提取,清洗数据的技巧

    def parse_item(self, response): item_loader = NewItemLoader(NewItem(), response) item_loader.add_xpa ...

  2. dotnet + LinQ 按照指定的字段 和 排序方式排序

    /// <summary> /// 根据指定属性名称对序列进行排序 /// </summary> /// <typeparam name="TSource&qu ...

  3. Redis 实战搭建高可用架构

    前言:最近在看关于redis缓存方面的知识,今天就来个 Redis sentinel 高可用架构,实战开始之前,先看看sentinel的概念 什么是redis-sentinel Redis-Senti ...

  4. ES6 入门系列 (三) 尾递归

    递归我们不陌生, 那什么是尾递归呢? 为什么要用尾递归呢? 尾递归怎么用呢? 带着这三个问题我们来了解它, 我们知道递归非常耗费内存,一不小心就会发生‘栈溢出’, 相信你一定遇到过这个错误: stac ...

  5. Angular4项目运行时URL自动加#方法

    import {HashLocationStrategy , LocationStrategy} from '@angular/common'; @NgModule({   declarations: ...

  6. Docker 的操作命令记录

    docker ps:列出正在运行的 container docker ps -a:列出所有的 container docker rm [containerid]:移除 container(可并列多个, ...

  7. 如何做一个跨平台的游戏App?

    如何做一个跨平台的游戏App? iOS和安卓系统上的应用程序,根据提供的内容不同,按照开发方式和用户体验不同,可区分为app和游戏: 首先从开发方式不同来说明,app开发一般是用操作系统官方提供的开发 ...

  8. MySQL Install--CentOS 7配置MySQL服务和开启启动

    创建MySQL服务 编辑文件: vim /usr/lib/systemd/system/mysql.service 录入下面内容: PS: 注意修改ExecStart脚本 [Unit]Descript ...

  9. 网络编程(二)--TCP协议、基于tcp协议的套接字socket

    一.TCP协议(Transmission Control Protocol 传输控制协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会 ...

  10. snowflake时间回退问题思考

    算法比较简单,每个id-generator负责生成的ID由3部分组成,41位时间戳可以表示到毫秒,10bit worker-id内部可自行划分,比如3位表示IDC,7位表示机器.最后12位是在一毫秒的 ...