Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >第七章:SpringBoot整合JavaMail发送邮件

第七章:SpringBoot整合JavaMail发送邮件

作者头像
恒宇少年
发布于 2018-06-27 07:10:26
发布于 2018-06-27 07:10:26
1.3K1
举报

JavaMail是SUN提供给广大Java开发人员的一款邮件发送和接受的一款开源类库,支持常用的邮件协议,如:SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时,不再需要考虑底层的通讯细节如:Socket而是关注在逻辑层面。JavaMail可以发送各种复杂MIME格式的邮件内容,注意JavaMail仅支持JDK4及以上版本。虽然JavaMail是JDK的API但它并没有直接加入JDK中,所以我们需要另外添加依赖,下面我们开始讲解本章的内容。

本章目标

将Java提供的JavaMail类库与SpringBoot项目进行整合,并且简单封装下JavaMail类库。

构建项目

本章项目无关Web相关内容,所以创建项目时选择Jar形式创建,并且不需要预先导入依赖。项目结构如下图1所示:

图1

可以看到上图1内容,多余的依赖并没有添加,如果你选择的是War项目也没有关系名,那好,我们接下来把我们的主角JavaMail请出来吧,把对应的依赖添加到pom.xml配置文件内。如下图2所示:

图2

依赖我们已经导入成功了,接下来我们开始编写JavaMail的封装,我这里简单的对JavaMail做出封装,如果您需要更完美的封装,请对我的代码做出修改即可,先来编写一个MailEntity类来保存发送邮件时需要的参数字段,如下图3所示:

图3

我们的MailEntity包含了上图3的字段内容,都是一些必填选项,下面我们来创建一个MailSender也就是邮件发送者实体,主要作用就是用来配置发送邮件参数以及执行发送邮件,代码如下图4、5、6、7、8所示:

图4

图5

图6

图7

图8

因为简书的富文本编辑器不支持代码块,下次编写文章使用MarkDown方式来写,类过长贴起来图挺费劲。上面可以看到我使用到了MailContentTypeEnum以及PropertiesUtil工具类。

MailContentTypeEnum

这是一个我自定义的枚举类型,枚举类型包含了邮件内容的类型,目前我仅仅添加了两种,一种是html另外一种则是text形式,具体代码如下图9所示:

图9

PropertiesUtil

PropertiesUtil是用于读取*.properties配置文件的工具类,使用JavaMail需要配置SMTP以及用户名、密码等也就是MailEntity内的字段,那么我们在/resource目录下创建一个名字叫mail.properties的配置文件,里面存放我们定义的邮件发送参数配置,这样方便修改,我分别贴出PropertiesUtil、mail.properties代码内容,如下图10、图11所示:

图10

图11

我使用的QQ邮箱地址作为测试,如果你需要使用你的QQ地址作为测试,请先到QQ邮箱开启POP3/SMTP服务,开启步骤如下。

开启POP3/SMTP

第一步:进入邮箱点击“设置”,如下图12所示:

图12

第二步:点击“账户”后往下拉找到POP3/IMAP/SMTP...,如下图13所示:

图13

我的POP3以及SMTP以及开启了所以这里显示的状态是已开启,如果您第一次使用QQ邮箱的SMTP服务,请点击“开启”并且按照提示步骤完成获取“授权码”即可,授权码就是发送邮件参数的smtp.pwd属性。

测试发送邮件

我们创建一个TestMail类来作为测试入口,因为我们的项目是jar形式,所以我们直接新建一个main方法直接调用发送邮件就可以了,如下图14所示测试代码:

图14

我是向我的钉钉邮箱发送了一条文本类型的测试邮件,发送效果图如下图15所示:

图15

可以看到我们的邮件收到了,证明我们已经完成了邮件发送的功能了,但是你在发送中配置mail.properties文件时配置昵称的时候最有可能出现的问题就是乱码,那么该问题如何解决呢?

昵称乱码问题解决

第一步:修改InteiiJ IDEA工具的properties文件的编码,点击File->Setting->Editor->File Encodings将下面的Default encoding设置为UTF-8,如下图16所示:

图16

那么我们的mail.properties内使用ASCII编码进行配置昵称就可以了。修改完成后再次测试发送邮件,你就会发现乱码问题解决了。

总结

上述内容就是本章的所有讲解,本章主要讲解了在SpringBoot项目内是如何使用JavaMail来进行发送简单邮件,简单封装了下MailSender类以及对象实体MailEntity,如果需要发送HTML内容的邮件修改contentType(MailContentTypeEnum.HTML)然后content("html代码")即可。

本章代码已经上传码云:

SpringBoot配套源码地址:https://gitee.com/hengboy/spring-boot-chapter

SpringCloud配套源码地址:https://gitee.com/hengboy/spring-cloud-chapter

SpringBoot相关系列文章请访问:目录:SpringBoot学习目录

QueryDSL相关系列文章请访问:QueryDSL通用查询框架学习目录

SpringDataJPA相关系列文章请访问:目录:SpringDataJPA学习目录

SpringBoot相关文章请访问:目录:SpringBoot学习目录,感谢阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.04.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
你好,我向我的qq邮箱发送了一条文本类型的测试邮件,结果邮件被自动认定为垃圾邮件进入垃圾箱,这个该怎么办?
你好,我向我的qq邮箱发送了一条文本类型的测试邮件,结果邮件被自动认定为垃圾邮件进入垃圾箱,这个该怎么办?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
springBoot整合发送邮件功能
本文将介绍spring官方提供的集成了邮件服务的JavaMailSenderImpl,开箱即用,十分方便。
贪挽懒月
2020/05/18
5230
springBoot整合发送邮件功能
SpringBoot的JavaMailSender(邮件发送)接口使用
Spring为邮件发送功能提供了一个很好的接口JavaMailSender,同时SpringBoot也为此提供了相应的自动化配置
摸鱼的G
2023/02/22
1.2K0
springboot 发送邮件
最近重写一个邮件服务来给告警业服务用,做成一个内置的应用。直接使用 spring 的 javamail 来实现。 公司使用腾讯企业邮箱。 这个例子正常使用,可以直接套上使用。
潇洒
2023/10/20
3820
java发送邮件-模板
今天写完了一个关于使用模板发送邮件的代码,作为例子保存着,希望以后用得着,也希望能够帮助到需要帮助的人 以163网易邮箱为例,使用java发送邮件,发送以邮件时使用模板(.ftl文件转换为html)发送邮件内容,并附带上附件,可抄送给多个人。项目的结构目录如下
全栈程序员站长
2022/08/28
1.8K0
java发送邮件-模板
ActiveMQ入门系列之应用:Springboot+ActiveMQ+JavaMail实现异步邮件发送「建议收藏」
现在邮件发送功能已经是几乎每个系统或网址必备的功能了,从用户注册的确认到找回密码再到消息提醒,这些功能普遍的会用到邮件发送功能。我们都买过火车票,买完后会有邮件提醒,有时候邮件并不是买完票立马就能收到邮件通知,这个就用到了异步邮件发送。
全栈程序员站长
2022/07/18
6020
ActiveMQ入门系列之应用:Springboot+ActiveMQ+JavaMail实现异步邮件发送「建议收藏」
SpringBoot 实现发送简单邮件
(1)连接qq邮箱服务器,连接STMP服务端口,确定发送方能够发送邮件(手动开启STMP服务,获取授权码)
RAIN7
2022/09/23
1K0
SpringBoot 实现发送简单邮件
【SpringBoot2.0系列12】SpringBoot之JavaMail发送,支持FreeMark模板渲染
大家都知道邮件协议有两个 smtp:邮件发送协议 pop3:邮件接收协议 我们现在要实现的邮件发送,那么重点就要放在smtp上。 在这里我们借助第三的邮件系统的smtp服务器来。比如QQ 126等。
yukong
2018/12/24
9570
【SpringBoot2.0系列12】SpringBoot之JavaMail发送,支持FreeMark模板渲染
重学Springboot系列之邮件发送的整合与使用
简单的说:POP3和IMAP是用来从服务器上下载邮件的。SMTP适用于发送或中转信件时找到下一个目的地。所以我们发送邮件应该使用SMTP协议。
大忽悠爱学习
2021/12/07
5920
重学Springboot系列之邮件发送的整合与使用
走进Java接口测试之使用JavaMailSender发送邮件
一般我们在做接口自动化时,都会通过钉钉或者邮件的方式通知测试结果信息。而且基本上邮件的内容都是测试报告。所以,今天就来讲讲如何利用 pring提供的 JavaMailSender接口,实现邮件发送功能。
高楼Zee
2019/07/17
2.2K0
走进Java接口测试之使用JavaMailSender发送邮件
使用 Java 发送邮件
在我们的应用程序中有时需要给用户发送邮件,例如激活邮件、通知邮件等等。那么如何使用 Java 来给用户发送邮件呢?
宋先生
2019/07/18
2.4K0
补习系列(12)-springboot 与邮件发送
SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮件传输协议,是发送协议。 它定义了一组从源地址到目的地址传输邮件的规范,并支持在传送过程中通过不同网络主机实现中转及传送。
美码师
2019/01/23
8320
SpringBoot邮件任务
最后的两个文件你用你自己电脑里面的就行,我是传了两张照片。 运行之后去网易邮箱查看:
别团等shy哥发育
2023/02/25
2400
SpringBoot邮件任务
SpringBoot整合email
spring.mail.password不是不是不是 你的邮箱密码,是授权码,授权码,授权码 (授权码获取方式在下面有)
CBeann
2023/12/25
1720
SpringBoot整合email
【快学springboot】使用springboot发送邮件
在实际项目中,经常需要用到邮件通知功能。比如,用户通过邮件注册,通过邮件找回密码等;又比如通过邮件发送系统情况,通过邮件发送报表信息等等,实际应用场景很多。这篇文章,就教大家通过springboot快速的实现一个发送邮件的功能。
Happyjava
2019/07/16
7740
【快学springboot】使用springboot发送邮件
SpringBoot项目发送邮件
这里以163邮箱示例,需要开启POP3/SMTP/IMAP服务,因为你需要用到SMTP协议来实现实时发送邮件。
全栈开发日记
2022/05/13
2160
SpringBoot项目发送邮件
【快学springboot】使用springboot发送邮件
在实际项目中,经常需要用到邮件通知功能。比如,用户通过邮件注册,通过邮件找回密码等;又比如通过邮件发送系统情况,通过邮件发送报表信息等等,实际应用场景很多。这篇文章,就教大家通过springboot快速的实现一个发送邮件的功能。
Happyjava
2024/02/02
3510
【快学springboot】使用springboot发送邮件
SpringBoot实现邮件发送功能
在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送。在Spring项目中发送邮件需要封装复杂的消息体,不太方便。而在Spring Boot项目中发送邮件就太简单了,下面一起来看看Spring Boot如何发送邮件。
jwangkun
2021/12/23
7880
SpringBoot实现邮件发送功能
SpringBoot实现邮件发送
SMTP全称为Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP认证要求必须提供账号和密码才能登陆服务器,其设计目的在于避免用户受到垃圾邮件的侵扰。
框架师
2021/03/05
6630
SpringBoot系列(十三)集成邮件服务以及邮件发送的几种方式
SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。
全栈学习笔记
2022/03/31
8490
SpringBoot系列(十三)集成邮件服务以及邮件发送的几种方式
SpringBoot邮件集成
邮件大家都不会陌生,如果从功能上去做一个划分的话,比如可以有注册激活邮件、密码找回邮件等等,如果从邮件的形式上来划分的话,又可以有简单文本邮件、HTML 邮件(包括模板 HTML 邮件)、附件邮件、静态资源邮件等。就是这样我们可以把不同形式的邮件加以功能需求化,做成一个一个的邮件服务去满足我们的业务需求。在 Spring Boot 中提供了一套针对于邮件服务的模块 spring-boot-starter-mail 以供我们开发项目需要的邮件服务。我们可以在项目中开发很多基础的邮件服务的业务逻辑,去适应很多的业务场景。
堆栈哲学
2022/11/24
7660
SpringBoot邮件集成
相关推荐
springBoot整合发送邮件功能
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文