Spring Boot实现发送邮件
作者:王耳总丶 发布时间:2023-11-08 22:19:40
标签:Spring,Boot,发送邮件
发送邮件
在web开发中,发送邮件是一个很常用的功能,Spring Boot也集成了发送邮件的功能
基本使用
使用Spring Boot的发送邮件功能,需要导入邮件的starter依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置邮件发送服务器的配置,如果是qq邮箱,password属性为邮箱的授权码
spring:
mail:
host: smtp.qq.com
username: 425017255@qq.com
password: xxxxxxxx
properties:
mail.smtp.ssl.enable: true
创建一个简单邮件对象SimpleMailMessage,设置邮件的主题,内容,发件人和收件人,然后自动注入JavaMailSenderImpl对象,使用这个对象的send方法发送邮件
@SpringBootTest
class DemoApplicationTests {
@Autowired
JavaMailSenderImpl mailSender;
@Test
void contextLoads() {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("测试邮件");
message.setText("这是一封测试邮件");
message.setTo("blackball1998@outlook.com");
message.setFrom("425017255@qq.com");
mailSender.send(message);
}
}
这样就可以发送简单邮件了
发送复杂邮件
发送复杂邮件,可以使用发送类的createMimeMessage方法创建一个复杂邮件对象MimeMessage,这个方法还有一个重载方法,可以读取IO流创建邮件对象
创建一个用于设置邮件的对象MimeMessageHelper,这个对象可以设置多种邮件的常用属性,这里以设置附件为例
@SpringBootTest
class DemoApplicationTests {
@Autowired
JavaMailSenderImpl mailSender;
@Test
void contextLoads() throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "utf-8");
messageHelper.setSubject("测试复杂邮件");
// 设置带样式的正文,使用html的方式设置样式
messageHelper.setText("<h1>这是一封测试邮件</h1><p style='color:red'>请查收附件</p>",true);
// 读取本地的一个文件,设置邮件的附件
messageHelper.addAttachment("附件1.jpg",new File("1.png"));
messageHelper.addAttachment("附件2.jpg",new File("2.png"));
messageHelper.setTo("blackball1998@outlook.com");
messageHelper.setFrom("425017255@qq.com");
mailSender.send(message);
}
}
设置好邮件的属性,然后用发送类发送邮件,就可以收到复杂邮件
邮件中的附件也可以打开
来源:https://blog.csdn.net/blackball1998/article/details/118163454


猜你喜欢
- protobuf对象不能直接使用jsonlib去转,因为protobuf生成的对象的get方法返回的类型有byte[],而只有String类
- 在maven中有几种方法打包项目,在之前的一篇博客中【Java】打包Jar包并用脚本执行,已经介绍了怎么在没有maven插件的情况下,怎么打
- 从大学就开始做C#这块,也做C#几年了,最近又从ios转回.Net,继续做C#,之前也没有写博客的习惯,写博客也是从我做ios的时候开始的,
- 前言随着使用es场景的增多,工作当中避免不了去使用es进行数据的存储,在数据存储到es当中以后就需要使用DSL语句进行数据的查询、聚合等操作
- 通常情况下,Android实现自定义控件无非三种方式。Ⅰ、继承现有控件,对其控件的功能进行拓展。Ⅱ、将现有控件进行组合,实现功能更加强大控件
- 写在前面,在笔者完成这个demo的时候,笔者发现现在大家已经不用Ajax来完成联级菜单了,实际上笔者这个demo也并不是为了完成这个,笔者主
- 开篇:我们将前面的springboot整合H2内存数据库,实现单元测试与数据库无关性提供的Restful服务注册到spring cloud的
- 本文实例为大家分享了Android保存QQ密码功能的具体代码,供大家参考,具体内容如下技术要点:使用文件储存的方式保存数据实现步骤:①用户交
- 在Java中,泛型的引入是为了在编译时提供强类型检查和支持泛型编程。为了实现泛型,Java编译器应用类型擦除实现: &
- 这一篇就着重写一下客户端的代码,客户端主要实现的有:启动后检测本地的xml文件,然后发送到服务器获取需要更新的文件以及版本列表。循环下载。下
- 本文实例讲述了Android TextView显示Html类解析的网页和图片及自定义标签。分享给大家供大家参考,具体如下:Android系统
- 工具类-java精确到小数点后6位验证要求,必须精确到小数点后6位,但是后面都是0的话,double会省略0,正则验证不通过,所以有了下面解
- 如果 d:\upload\file\ 文件夹不存在,会报错String strPath = "d:\\upload\\file\\
- 本文实例讲述了Android使用Eclipse 打开时“发现了以元素'd:skin'”开头的无效内容。此处不应含有子元素的解
- 今天,写了个小代码。抓取首页中的极客头条。效果如图:分享给新手朋友。要点:1.使用ApacheHttpClient库实现GET请求。2.异步
- 企业级的系统和我们平常桌面、手机上运行的软件有着很重要的区别,其中比较重要的一点就是环境(包括第三方的系统的不同接口以及各系统的不同版本、安
- I've been looking for help on how to find objects in Generics with
- 引言树形结构不论在生活中或者是开发中都是一种非常常见的结构,一个容器对象(如文件夹)下可以存放多种不同的叶子对象或者容器对象,容器对象与叶子
- 如何避开在ListView等AdapterView上动态添加删除项的陷阱,下面就为大家分享,具体内容如下首先,定义如下array资源,作为列
- 字符串操作是C#中最基本的、最常见的、也是用的最多的,以下我总结了几种常见的方法:1.把字符串按照分隔符转换成 List ///