本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringBoot相关知识相关知识,打造完整的SpringBoot学习步骤,提升工程化编码能力和思维能力,写出高质量代码。希望大家都能够从中有所收获,也请大家多多支持。
专栏地址:SpringBoot专栏
本文涉及的代码都已放在gitee上:gitee地址
如果文章知识点有错误的地方,请指正!大家一起学习,一起进步。
专栏汇总:专栏汇总

文章目录

  • 邮件
    • 发送简单邮件
    • 发送多组件邮件(附件、复杂正文)

邮件

​ springboot整合第三方技术第三部分我们来说说邮件系统,发邮件是java程序的基本操作,springboot整合javamail其实就是简化开发。不熟悉邮件的小伙伴可以先学习完javamail的基础操作,再来看这一部分内容才能感触到springboot整合javamail究竟简化了哪些操作。简化的多码?其实不多,差别不大,只是还个格式而已。

​ 学习邮件发送之前先了解3个概念,这些概念规范了邮件操作过程中的标准。

  • SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件的传输协议
  • POP3(Post Office Protocol - Version 3):用于接收电子邮件的标准协议
  • IMAP(Internet Mail Access Protocol):互联网消息协议,是POP3的替代协议

​ 简单说就是SMPT是发邮件的标准,POP3是收邮件的标准,IMAP是对POP3的升级。我们制作程序中操作邮件,通常是发邮件,所以SMTP是使用的重点,收邮件大部分都是通过邮件客户端完成,所以开发收邮件的代码极少。除非你要读取邮件内容,然后解析,做邮件功能的统一处理。例如HR的邮箱收到求职者的简历,可以读取后统一处理。但是为什么不制作独立的投递简历的系统呢?所以说,好奇怪的需求,因为要想收邮件就要规范发邮件的人的书写格式,这个未免有点强人所难,并且极易收到外部攻击,你不可能使用白名单来收邮件。如果能使用白名单来收邮件然后解析邮件,还不如开发个系统给白名单中的人专用呢,更安全,总之就是鸡肋了。下面就开始学习springboot如何整合javamail发送邮件。

发送简单邮件

步骤①:导入springboot整合javamail的starter

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

步骤②:配置邮箱的登录信息

spring:mail:host: smtp.126.comusername: test@126.compassword: test

​ java程序仅用于发送邮件,邮件的功能还是邮件供应商提供的,所以这里是用别人的邮件服务,要配置对应信息。

​ host配置的是提供邮件服务的主机协议,当前程序仅用于发送邮件,因此配置的是smtp的协议。

​ password并不是邮箱账号的登录密码,是邮件供应商提供的一个加密后的密码,也是为了保障系统安全性。不然外部人员通过地址访问下载了配置文件,直接获取到了邮件密码就会有极大的安全隐患。有关该密码的获取每个邮件供应商提供的方式都不一样,此处略过。可以到邮件供应商的设置页面找POP3或IMAP这些关键词找到对应的获取位置。qq邮箱的服务开启如下,仅供参考:

步骤③:使用JavaMailSender接口发送邮件

@Service
public class SendMailServiceImpl implements SendMailService {@Autowiredprivate JavaMailSender javaMailSender;//发送人private String from = "test@qq.com";//接收人private String to = "test@126.com";//标题private String subject = "测试邮件";//正文private String context = "测试邮件正文内容";@Overridepublic void sendMail() {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from+"(小甜甜)");message.setTo(to);message.setSubject(subject);message.setText(context);javaMailSender.send(message);}
}

​ 将发送邮件的必要信息(发件人、收件人、标题、正文)封装到SimpleMailMessage对象中,可以根据规则设置发送人昵称等。

发送多组件邮件(附件、复杂正文)

​ 发送简单邮件仅需要提供对应的4个基本信息就可以了,如果想发送复杂的邮件,需要更换邮件对象。使用MimeMessage可以发送特殊的邮件。

发送网页正文邮件

@Service
public class SendMailServiceImpl2 implements SendMailService {@Autowiredprivate JavaMailSender javaMailSender;//发送人private String from = "test@qq.com";//接收人private String to = "test@126.com";//标题private String subject = "测试邮件";//正文private String context = "<img src='ABC.JPG'/><a href='https://www.itcast.cn'>点开有惊喜</a>";public void sendMail() {try {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message);helper.setFrom(to+"(小甜甜)");helper.setTo(from);helper.setSubject(subject);helper.setText(context,true);      //此处设置正文支持html解析javaMailSender.send(message);} catch (Exception e) {e.printStackTrace();}}
}

发送带有附件的邮件

package com.example.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMailMessage;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.internet.MimeMessage;
import java.io.File;@Service
public class SendMailSercive {@Autowiredprivate JavaMailSender javaMailSender;//发送人private String to = "xmg665@126.com";//接收人private String from = "aaaaaa@qq.com";
//    private String to = "bbbbbbb@qq.com";//标题private String subject = "测试邮件";//正文private String context = "测试邮件正文内容";//正文private String context2 = "<img src='https://img1.baidu.com/it/u=2476734823,214005944&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500' /><a href='https://www.baidu.com'>测试富文本</a>";public void sendMail() {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from+"(小甜甜)");message.setTo(to);message.setSubject(subject);message.setText(context);javaMailSender.send(message);}public void sendMail2() {try {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message);helper.setFrom(from+"(小甜甜)");helper.setTo(to);helper.setSubject(subject);helper.setText(context2,true);javaMailSender.send(message);}catch (Exception e){e.printStackTrace();}}public void sendMail3() {try {MimeMessage message = javaMailSender.createMimeMessage();
//            允许添加附件MimeMessageHelper helper = new MimeMessageHelper(message,true);helper.setFrom(from+"(小甜甜)");helper.setTo(to);helper.setSubject(subject);helper.setText(context2,true);//添加附件
//            File f1 = new File("resources\\application.yml");File f2 = new File("E:\\cgw\\gitee\\spring-boot-tutorial\\springboot_0021_springboot_email\\src\\main\\resources\\ABC.jpg");//            helper.addAttachment(f1.getName(),f1);helper.addAttachment("test.png",f2);javaMailSender.send(message);}catch (Exception e){e.printStackTrace();}}}

总结

  1. springboot整合javamail其实就是简化了发送邮件的客户端对象JavaMailSender的初始化过程,通过配置的形式加载信息简化开发过程

SpringBoot整合邮件发送相关推荐

  1. SpringBoot整合邮件发送功能

    说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若在阅 ...

  2. SpringBoot整合邮件任务(QQ邮箱发送)

    SpringBoot整合邮件任务(QQ邮箱发送) 1.获取QQ邮箱授权码 2.导入邮箱发送依赖启动器 使用定制邮件模板的方法实现通用邮件发送,Thymeleaf构建邮件模板需要一起导入依赖. < ...

  3. exchange无法收发邮件_SpringBoot2.x系列教程69--SpringBoot中整合邮件发送

    SpringBoot2.x系列教程69--SpringBoot中整合邮件发送 作者:一一哥 注: 本文案例以QQ邮箱发送的实现为例! 一. 邮件发送概述 1. 概述 在Spring框架中提供了一个Ja ...

  4. Java技术:SpringBoot实现邮件发送功能

    邮件发送功能基本是每个完整业务系统要集成的功能之一,今天小编给大家介绍一下SpringBoot实现邮件发送功能,希望对大家能有所帮助! 今天主要给大家分享简单邮件发送.HTML邮件发送.包含附件的邮件 ...

  5. Springboot实现邮件发送(2020最新版)

    在正式讲解如何用Springboot发送邮件之前,先普及四个容易忽视的概念(好多教程直接忽略介绍): 1.邮件协议,简单理解下:小明给小红发了一封邮件,指的是小明登录邮箱客户端(比如通过浏览器登录QQ ...

  6. SpringMvc整合邮件发送

    springmvc发送邮件,整合javax.mail,spring整合邮件发送 springmvc版本采用的是4.2.4.RELEASE,其他的版本未做测试(应该都可以) pom文件引入依赖 < ...

  7. 使用SpringBoot实现邮件发送

    邮件发送是一个非常常见的功能,注册时的身份认证.重要通知发送等都会用到邮件发送.Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spring中提供了JavaMailSender用来简化 ...

  8. 补习系列(12)-springboot 与邮件发送

    目录 一.邮件协议 关于数据传输 二.SpringBoot 与邮件 A. 添加依赖 B. 配置文件 C. 发送文本邮件 D.发送附件 E. 发送Html邮件 三.CID与图片 参考文档 一.邮件协议 ...

  9. SpringBoot 实现邮件发送功能

    1.知识点疏通 邮件再项目中经常会被用到,比如邮件发送通知,比如通过邮件注册,认证,找回密码,系统报警通知,报表信息等. 接下来先了解一下邮件协议. 1.1 SMTP.POP.IMAP4协议 SMIP ...

最新文章

  1. C# Programming Language学习笔记(三)
  2. Win-Get——Windows下的自由软件自动安装程序
  3. 支持M1芯片mac 达芬奇17中文版(详细安装教程) DaVinci Resolve Studio 17.3.1b5
  4. JSON数据格式---JSON语法规则、JSON文件
  5. hdu 4430 Yukari's Birthday(二分)
  6. kafka消息队列学习笔记
  7. 简单shellcode编写
  8. corosync +drbd实现HA MariaDB
  9. 电阻触摸屏 linux 校准软件,android 电阻单点触摸屏校准
  10. Ubuntu服务器用户磁盘空间quota分配
  11. Qua Vadis Eclipse? 第一部分
  12. 51Nod1740 蜂巢迷宫
  13. POI读取Excel转为HTML文件
  14. 我的世界java版变形模组下载_我的世界变形模组
  15. 【POJ 2484】A Funny Game(对称博弈)
  16. 计算机网络 华东理工大学 第2章测试
  17. 2021年R1快开门式压力容器操作考试题及R1快开门式压力容器操作最新解析
  18. 解惑 功能需求和非功能性需求
  19. Java笔记:泛型、限定通配符与非限定通配符
  20. 机器人比赛对青少年成长的意义

热门文章

  1. Tushare社区验证Carhart四因子模型
  2. 加载大图片,内存溢出问题
  3. BlockingQueue及其实现
  4. http chunk
  5. AJAX学习笔记——发送AJAX的POST请求,模拟from表单提交
  6. MyJzvdStd+JZMediaExo
  7. OpenCV 文字绘制----cv::putText详解
  8. “手撕“ BootStrap 方法
  9. 书签 自动更新浏览器的书签_最有用的书签,可增强您的浏览体验
  10. 使用Excel VBA制作成绩统计图----(嵌入模式)