您的位置 首页 java

SpringBoot集成邮件服务及发送几种方式,8大常用SpringBoot项目

前言

首先介绍一下今天要分享的内容,主要包括两部分:1.SpringBoot集成邮件服务及发送几种方式;
2. 8大常用SpringBoot项目。

SpringBoot集成邮件服务及发送几种方式

目录:

一、SMTP协议简介

SMTP是一种提供可靠且有效的 电子邮件传输 的协议。SMTP是建立在 FTP 文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能 跨越网络传输邮件 ,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

 简单来说:我们使用的这些邮件发送功能,他们之间都有一个专门的电子邮件的服务器,类似于邮局,你将邮件发给邮局,邮局又会根据你的邮寄地址发送给相应的邮局,然后接收方去邮局取邮件。而邮件服务器呢,就是互联网之间的一个邮局,不同的网络之间也能实现电子邮件的发送。

 Spring框架在java邮件服务的基础上进行了封装,SpringBoot在Spring的基础上对邮件服务进一步的封装,让SpringBoot发送邮件更为便利,灵活。

二、开启SMTP服务并获取授权码

 这里我们以 QQ邮箱 为例,要想在SpringBoot发送QQ邮件必须先打开QQ邮箱的SMTP功能,默认是关闭的,具体操作如下。进入邮箱→设置→账户,然后找到下面这个:

将第一个开启,这里我已经开启了,就不用再开启了,至于那个POP3协议,这是一种从邮件服务器上读取邮件的协议,通过POP3协议,收信人不需要参与到与邮件服务器之间的邮件读取过程,简化了用户操作. 收信人可以“离线”地进行邮件处理,很方便地接收,阅读邮件。

然后我们开启之后还需要获取一个授权码,这个授权码我们后面编写邮件配置需要用到。获取授权码可能需要验证身份什么的。将授权码保存下来。

三、依赖导入与配置说明

依赖导入

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>  

 为了方便测试我们也需要将 starter-web 的依赖导入进来。

配置文件

 spring:
  mail:
    host: smtp.qq.com
    username: qzstudynote@qq.com
    password: zxcvbnmkj
    properties:
      mail:
        smtp:
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
##         ssl:
##           enable :true
    default-encoding: utf-8  

配置说明

  • host就是你的邮件服务器地址,
  • username就是你的邮箱账号,带上后缀
  • password就是你刚刚复制的授权码,我这里是乱写的;
  • default-encoding 设置邮件的编码为utf-8;
  • properties:额外的配置,这里我写了两个,只用其中一个就行了,开启ssl加密,保证安全连接。

四、邮件发送

1.简单邮件发送

 编写controller,或者是直接在测试模块添加测试就行

 @RestController
public class MailController {
    @Autowired
    JavaMailSenderImpl javaMailSender;
    @RequestMapping("/mail")
    public String sendMail(){
        SimpleMailMessage message = new SimpleMailMessage();
        //邮件设置
        message.setSubject("邮件主题");
        message.setText("邮件内容");
        message.setTo("xxxxxxx@139.com","111111111@qq.com");
        message.setFrom("qzstudynote@qq.com");
        javaMailSender.send(message);
        return "简单邮件发送成功!"
    }
}  

代码说明 JavaMailSenderImpl 就是一个SpringBoot中用来发送邮件的一个实现类,我们需要将它注入到bean中,以供使用。它里面有一些方法,这里只展示了简单的几个,其他的也很简单,比如说发送日期,抄送人等等。接受者可以设置多个,如上。

2. 带附件内容和正文带图片的邮件发送

 @RequestMapping("/mineMail")
public String sendMineMail() throws MessagingException {
     //1、创建一个复杂的邮件
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        //邮件主题
        helper.setSubject("这是一个邮件啊");
        //文本中添加图片
        helper.addInline("image1",new FileSystemResource("D:imagesspring1.jpg"));
        //邮件内容
        helper.setText("全栈学习笔记<a href='#39;>百度一下</a>    <img src='cid:image1'></img>",true);
        helper.setTo("xxxxx@139.com");
        helper.setFrom("qzstudynote@qq.com");
        //附件添加图片
        helper.addAttachment("1.jpg",new File("D:imagesspring1.jpg"));
        //附件添加word文档
        helper.addAttachment("哈哈哈.docx",new File("D:imagesspring哈哈哈.docx"));

        javaMailSender.send(mimeMessage);
       return "复杂邮件发送!";
}  

代码说明

  • 创建一个MimeMessage 邮件,但是我们也需要创建一个工具类MimeMessageHelper,相当于代理类吧,邮件的属性配置就由这个工具类来实现。
  • addInline() ,第一个参数是一个contentId,String类型的,相当于是一个key,第二个参数是一个Resource对象,资源对象,这里我们传了一个本地的图片就用的FileSystemResource对象。当然这里是说的我们用的这个addInline方法的参数是这样,还有其他的参数类型,所谓重载。
  • setText() ,这里用到的第一个参数就是文本字符串,第二个就是是否解析文本中的html语法。
  • addAttachment() 这个方法是用来添加附件的,附件和我们之前添加的图片不一样,附件作为一种未下载的文件,而资源文件则是直接显示到正文中。利用我自己的邮箱进行测试的截图:

3. thymeleaf模板作为邮件发送

 项目中需要引入thymeleaf依赖,并且要在新建的html文件中加入:xmlns:th=”#34; ,不会thymeleaf的请移步之前的文章。

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>  

 这里在templates下面创建了一个email的html5文件。

 <!DOCTYPE html>
<html lang="en" xmlns:th="#34;>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<p th:text="${name}"></p>
<a th:text="这是一个链接" th:href="${link}"></a>
<img th:src="${image1}">
</body>
</html>  

 controller中再添加一个方法。

 @RequestMapping("/thyMail")
    public String sendThymeleafMail() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
        messageHelper.setSubject("这是一个thymeleaf模板邮件");
        messageHelper.setTo("xxxxxxxx@139.com");
        messageHelper.setFrom("qzstudynote@qq.com");
        Context context = new Context();
        context.setVariable("name","这是一个新建的thymeleaf模板");
        context.setVariable("link","#34;);
        context.setVariable("image1","#34;);
        String value = templateEngine.process("email.html",context);
        messageHelper.setText(value,true);
        javaMailSender.send(mimeMessage);
        return "模板邮件发送成功";
    }  

代码说明:

  • Context 属于org.thymeleaf.context这个包。
  • context.setVariable() ,第一个参数是String,第二个是Object类型。第一个参数就对应thymeleaf模板上面相同名字的参数。
  • templateEngine.process() 将指定路径的html文件转换成String类型返回。

五、总结

 本文讲了基础的邮件发送原理,SMTP协议以及提到的POP3协议的概要内容。然后一起引入依赖,添加项目属性配置,最后讲解了三大类发送邮件的方式。

八大常用SpringBoot项目

前言:

下面将要介绍的 Spring Boot 精品项目是久一的好朋友小柒进行维护的,小柒热爱写博客、开源项目。下面的项目都是不错的案例,有针对支付、搜索、分布式存储等一系列的解决方案,并且配备了详细的教程。工作中如有用到相关业务收藏此文章。

原文:

2017年,曾在自己的博客中写下这样一段话:有一种力量无人能抵挡,它永不言败生来倔强。有一种理想照亮了迷茫,在那写满荣耀的地方。

如今2019,虽然没有大理想抱负,但是却有自己的小计划。下面是2018年来,自己利用闲暇周末时间搞得几个开源项目,可能小伙伴很多都接触过,但是这里还是要分享给大家,与君共勉,一起学习。

项目一:支付项目

SpringBoot集成邮件服务及发送几种方式,8大常用SpringBoot项目

简介: 支付服务:支付宝、微信、银联详细 代码案例,目前已经 1800+Star 。十分钟让你快速搭建一个支付服务,内附各种教程。

项目地址:

项目二:秒杀案例

SpringBoot集成邮件服务及发送几种方式,8大常用SpringBoot项目

简介: 从0到1构建分布式秒杀系统,脱离案例讲架构都是耍流氓,码云 GVP 项目。这个是自5月以来最上心的一个项目,尽管只是一个案例,但是从中也学到了不少知识。

项目地址:

项目三:邮件服务

简介: 邮件发送服务,文本,附件,模板,队列,多线程,定时任务实现多种功能。

项目地址:

项目四:搜索服务

SpringBoot集成邮件服务及发送几种方式,8大常用SpringBoot项目

简介: ES全文搜索引擎,基于Elasticsearch构建网站日志处理系统,通过数据同步工具等一些列开源组件来快速构建一个日志处理系统,项目雏形初步成型中。

项目地址:

项目五:任务管理系统

SpringBoot集成邮件服务及发送几种方式,8大常用SpringBoot项目

简介: 基于spring-boot+quartz的CRUD任务管理系统 。

项目地址:

项目六:在线文档管理系统

SpringBoot集成邮件服务及发送几种方式,8大常用SpringBoot项目

简介: spring-boot-doc是一款针对IT团队开发的简单好用的文档管理系统。

项目地址:

项目七:分布式文件

SpringBoot集成邮件服务及发送几种方式,8大常用SpringBoot项目

简介 :没什么好介绍的,集成了Fastdfs而已。FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:

文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。

项目地址:

项目八:讯飞语音

SpringBoot集成邮件服务及发送几种方式,8大常用SpringBoot项目

简介 :讯飞语音JavaWeb语音合成解决方案。

项目地址:

总结: 总结这一年来,收获还是蛮大的,通过开源本身技能得到提升,同时也接触了不少热爱技术的小伙伴(比如久一,嘻嘻嘻)。

没有对比就没有伤害,你一直想成为优秀的人,可是你却没有付出一丁点儿的努力。你想想比你优秀的人都还在努力,你有什么资格不去努力!山无棱天地合,喂点鸡汤给大家。

(本文来自公公号:爪哇笔记、全栈学习笔记)

感谢大家的支持,多多转发评论,关注不迷路~~~

文章来源:智云一二三科技

文章标题:SpringBoot集成邮件服务及发送几种方式,8大常用SpringBoot项目

文章地址:https://www.zhihuclub.com/181697.shtml

关于作者: 智云科技

热门文章

网站地图