SpringBoot2.5.4发送邮件4种方式

一.准备

在创建SpringBoot项目
在这里插入图片描述

二、选择依赖

选择依赖时 发现其选择依赖时有邮件发送与Springboot整合的jar包,我们勾选即可
在这里插入图片描述
如果未勾选也不要紧,咱们手动导入

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

三、等待依赖下载完成, 增加配置文件

spring:mail:#smtp服务主机  qq邮箱则为smtp.qq.comhost: smtp.qq.com#服务协议protocol: smtp# 编码集default-encoding: UTF-8#发送邮件的账户username: 251xxxx2@qq.com#授权码password: opwuxxxxxoceaiitest-connection: trueproperties:mail:smtp:auth: truestarttls:enable: truerequired: true

四、简单邮件发送

Springboot已经给我们邮件发送进行了非常好的整合了,我们只需要注入邮件发送接口 调用其中的方法,就能轻松而愉悦的进行邮件发送了!

我们只需要在任意交由Spring管理的类(例如你的controller、service层等)下注入以下接口即可

 @Autowiredprivate JavaMailSender mailSender;

由于每一封邮件都有固定的内容 例如 收件人信息 邮件内容 邮件标题 那么我们充分利用java面向对象的特性,我们把邮件发送抽取为一个对象

获取发送方账户信息

 @Value("${spring.mail.username}")private String from;

定义一个实体:

package info.lyscms.springboot.mail.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @author Administrator
* @version 2021/5/13 0013*/@Data@AllArgsConstructor@NoArgsConstructorpublic class SimpleEmailEntity {/*** 主题*/private String subject;/*** 主题内容*/private String content;/*** 接收人邮箱列表*/private String[] tos;
}

定义发送接口

void sendSimpleMail(SimpleEmailEntity simpleEmailEntity);

发送邮件方法实现示例

 @Overridepublic void sendSimpleMail(SimpleEmailEntity simpleEmailEntity) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from);message.setSubject(simpleEmailEntity.getSubject());message.setText(simpleEmailEntity.getContent());message.setTo(simpleEmailEntity.getTos());javaMailSender.send(message);}

定义一个controller类并定义发送邮件接口

package info.lyscms.springboot.mail.controller;import info.lyscms.springboot.mail.entity.SimpleEmailEntity;import info.lyscms.springboot.mail.service.MailService;import lombok.RequiredArgsConstructor;import org.springframework.web.bind.annotation.*;@RestController@RequiredArgsConstructor@RequestMapping("/mail")public class MailController {private final MailService mailService;@PostMapping("/simple")public void sendSimpleMail(@RequestBody SimpleEmailEntity simpleEmailEntity){mailService.sendSimpleMail(simpleEmailEntity);}}

使用类似postman工具调用接口

###POST http://localhost:8080/mail/simpleContent-Type: application/json​{"tos": ["ly23580512@163.com"],"subject": "Hello Watcher","content": "Welcome to lyscms.info"}

五、HTML格式邮件发送

1.创建一个MINE消息

   //创建一个MINE消息MimeMessage message = javaMailSender.createMimeMessage();

2.创建一个MimeMessageHelper对象,并且需要传入一个MimeMessage

 MimeMessageHelper mineHelper = new MimeMessageHelper(message, true);//谁发mineHelper.setFrom(from);//谁要接收mineHelper.setTo(htmlEmailEntity.getTos());//邮件主题mineHelper.setSubject(htmlEmailEntity.getSubject());//邮件内容   true 表示带有附件或htmlmineHelper.setText(htmlEmailEntity.getContent(), true);

3.使用JavaMailSender接口发送

javaMailSender.send(message);

4.content 是类似<h1>Hi Xiaoming…</h1><span>Hi Xiaoming…</span>这样的HTML字符串即可。

###POST http://localhost:8080/mail/htmlContent-Type: application/json​{"tos": ["ly23580512@163.com],"subject": "Hello Watcher Html","content": "<h1>Hi Xiaoming...</h1><span>Hi Xiaoming...</span>"}

六、带附件邮件发送

相对html发送方式就多了一个addAttachment方法

//添加附件
mineHelper.addAttachment("附件文件名称.txt",new File("D://1.txt"));

访问

###
POST http://localhost:8080/mail/file
Content-Type: application/json{"tos": ["ly23580512@163.com"],"subject": "Hello Watcher Html File","content": "<h1>Hi Xiaoming...</h1><span>Hi Xiaoming...</span>"
}

七、带内嵌图片邮件发送

// 图片占位写法  如果图片链接写入模板 注释下面这一行
helper.addInline("img01",new FileSystemResource(filePath));
###
POST http://localhost:8080/mail/inline/image
Content-Type: application/json{"tos": ["ly23580512@163.com"],"subject": "Hello Watcher Html images","content": "<h1>Hello</h1><p><img src=\"cid:img01\"></p>"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手游传奇刷元宝_传奇手游 平民制霸刀刀爆元宝!

新轩辕神途手游游戏介绍新轩辕神途是一款玩法种类十分丰富多样的神途手游&#xff0c;游戏内拥有放置挂机升级玩法&#xff0c;玩家不用浪费时间工作上学都能自动升级打宝&#xff0c;更有十分庞大的世界地图等你来探索&#xff0c;十分靠谱&#xff0c;更受欢迎&#xff0c;爆…

MySQL 逻辑架构与常用的存储引擎

文章目录概述逻辑架构示意图Server 层功能模块连接器查询缓存分析器优化器执行器存储引擎层InnoDBInnoDB 主要特性InnoDB 引擎下的查询过程MyISAMMyISAM 的主要特性MyISAM 引擎下的查询过程InnoDB 和 MyISAM 的对比概述 MySQL 是我们平时开发中最常用的关系型数据库&#xff0…

java 阿里云接口实现发送短信验证码

1.先去阿里云开通短信服务&#xff1a; 2.添加模板及签名&#xff1a;需要审核&#xff0c;个人账户审核就几分钟就OK 先解释一下模板及签名&#xff1a; 标准参照&#xff1a;https://help.aliyun.com/document_detail/55324.html?spm5176.sms-sign.0.0.765c1cbeNhvWBZ 去…

faiss python安装_faiss入门

Faiss入门篇假定Faiss已经被安装&#xff0c;若未安装可参考小编安装编译篇https://zhuanlan.zhihu.com/p/78689463。本篇小编基于Faiss的官方wiki实例展开&#xff0c;旨在让大家快速入门Faiss。Faiss底层用c实现并为用户提供python接口&#xff0c;本篇我们以python示例Faiss…

MySQL 索引底层数据结构实现

文章目录概述讨论范围查询数据结构查询数据结构种类及其高性能查询原理MySQL 索引的底层数据结构MySQL 索引的需求分析选择 MySQL 索引的底层数据结构B- 树和 B 树的对比MySQL 索引的底层数据结构揭秘概述 MySQL 的索引是存储引擎用于快速找到记录的一种数据结构&#xff0c;是…

Java面试——SpringMVC系列总结

文章目录&#xff1a; 1.什么是Spring MVC&#xff1f; 2.Spring MVC的主要组件有哪些&#xff1f; 3.请描述一下Spring MVC的工作流程&#xff1f; 4.MVC是什么&#xff1f;MVC设计模式的好处有哪些 5.拦截器Interceptor与过滤器Filter有什么区别&#xff1f; 6.Spring …

中蒙俄经济走廊背景_上海外国语大学师生代表团参观访问G60科创走廊俄罗斯院士创新基地...

10月23日&#xff0c;上海外国语大学团委书记、创新创业与实践教育学院执行院长廖文其、俄罗斯东欧中亚学院党总支副书记郝佳、辅导员石朝天及学生代表等一行15人参观访问G60科创走廊俄罗斯院士创新基地(下简称&#xff1a;创新基地)。创新基地主任赵磊、俄罗斯中小企业联合会华…

MySQL 索引类别与索引使用指南

文章目录概述MySQL 索引类型MySQL 索引方法BTREE 方法HASH 方法主键构成的索引结构主键索引的优点主键索引的缺点依赖顺序插入更新代价高索引使用指南索引树回顾索引树排序规则最左前缀法则最左前缀法则的产生依据最左前缀法则延申字段书写顺序不影响最左前缀法则最左前缀法则总…

测试员不可不知的几款bug管理工具

根据每个公司性质的不同&#xff0c;规模的不同&#xff0c;所用到的bug管理工具也可能不同。你们用的bug管理工具是什么呢&#xff1f;下面介绍几款主流的bug管理工具&#xff1a; 1. JIRA&#xff08;付费&#xff09; JIRA的生产者把JIRA定义为Professional Issue Tracker&…

ios 监听一个控制器的属性_ios - kvo观察者示例(监听类的属性变化)

首先创建Person分类#import interface Person : NSObjectproperty (nonatomic, copy) NSString *name;property (nonatomic, assign) float height;end.m中不做任何事情控制器.m中#import "ViewController.h"#import "Person.h"interface ViewController (…

Bugzilla 使用指南

本篇文章主要关注于如何高效合理的使用Bugzilla。 Bugzilla是一个开源的缺陷跟踪系统&#xff0c;它可以管理软件开发过程中缺陷的提交、修复、关闭等整个生命周期。 1. 基本概念 在Bugzilla中&#xff0c;Bug报告状态分为以下几种状态&#xff0c; 待确认的 unconfirmed 新…

MySQL explain 命令

概述 MySQL 的 explain 命令&#xff0c;主要用于查看实际查询过程中的一些执行细节&#xff08;执行计划&#xff09;&#xff0c;也是查看优化器决定如何执行查询的主要方法 explain 使用示例 explain 的使用也很简单&#xff0c;在 select 语句之前增加 explain 关键字再…

r语言从giuthb安装失败_R语言install_github安装包问题

今早在看微信时&#xff0c;看到一篇文章介绍R可视化的数据包 - rCharts。rCharts的可用性还OK&#xff0c;就是安装时遇到很多坑。如果想要玩一下rCharts&#xff0c;希望我说的这些坑可以让你更快的完成安装。首先需要安装devtools的包&#xff0c;devtools包安装时&#xff…

centos6.5安装bugzilla超详细教程

经过自己的摸索&#xff0c;与尝试&#xff0c;成功在centos6.5上&#xff0c;安装bugzilla。并且可以发送邮件。 一、安装软件 首先&#xff0c;需要安装一些软件 yum install mysql-devel -y yum install mysql-server -y yum install httpd -y yum install gcc gcc-…

从numpy里加载_PyTorch强化:01.PyTorch 数据加载和处理

PyTorch提供了许多工具来简化和希望数据加载&#xff0c;使代码更具可读性。1.下载安装包scikit-image&#xff1a;用于图像的IO和变换pandas&#xff1a;用于更容易地进行csv解析from __future__ import print_function, divisionimport osimport torchimport pandas as pd #用…

Redmine使用手册

一、Redmine简介 Redmine是基于ROR框架开发的一套跨平台项目管理系统&#xff0c;是项目管理系统的后起之秀&#xff0c;据说是源于Basecamp的ror版而来&#xff0c;支持多种数据库&#xff0c;除了和DotProject的功能大致相当外&#xff0c;还有不少自己独特的功能&#xff0…

swagger2maven依赖_Maven + SpringMVC项目集成Swagger

Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法&#xff0c;参数和模型紧密集成到服务器端的代码&#xff0c;允许API来始终保持同步。作用&#x…

IDEA2019版最新配置SVN及上传教程-超详细图文详解

IDEA2019版配置SVN图文详解 1. 查看svn仓库 调出svn视图&#xff1a; 连接svn服务器&#xff1a; 连接后效果如下&#xff1a; 补充:如果输入正确的连接地址后出现错误—系统找不到指定的文件 请到设置中检查(File | Settings | Version Control | Subversion)SVC客户端路径…

openocd目录_OpenOCD的调试

Openocd的调试步骤1、前言本文档仅用于学习参考。对本文档作者保留所有权利。联系邮箱&#xff1a;yarakyoungqq.com2、工具本文使用的软、硬件工具如下&#xff1a;目标开发板&#xff1a;ST SPEAr310 EVB 2.0(官网www.st.com)及其交叉编译环境。仿真器&#xff1a;OpenJTAG(官…

dubbo:reference、dubbo:service和@Service、@Reference使用情况

以前在同一模块中Spring依赖注入&#xff0c;可以通过Service和Autowired Dubbo是远程服务调用&#xff0c;消费方需要注入提供方定义的接口实例&#xff0c;可以通过xml配置 dubbo:reference、dubbo:service <dubbo:service interface"fei.CustomerServices" …