首页 > 其他分享 >Springboot实现发送邮件功能

Springboot实现发送邮件功能

时间:2023-12-25 13:33:06浏览次数:30  
标签:POP3 Springboot JavaMailSenderImpl messageHelper 发送 服务器 邮件

相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送,在Spring Boot的Starter模块中也为此提供了自动化配置。

下面通过实例来讲解如何在Spring Boot中使用JavaMailSender发送邮件。
目录
一、前言
1.基础知识
2.传输协议
3.进阶知识
二、实现
1.开启邮件服务
2.项目创建,引入依赖
3.application.yml配置
4.编写发送邮件方法
4.1 发送纯文本邮件
4.2 发送html邮件
4.3 发送带附件的邮件
5.发送邮件接口
5.1 发送纯文本邮件
5.2 发送HTML邮件
5.3 发送带附件的邮件
6.测试发送邮件
6.1 测试纯文本邮件发送
6.2 测试html邮件发送
6.3 测试带附件的邮件发送
三、代码源码
一、前言
在实际项目中,经常需要用到邮件通知功能。比如,用户通过邮件注册,通过邮件找回密码等;又比如通过邮件发送系统情况,通过邮件发送报表信息等等,实际应用场景很多。这篇文章,就教大家通过springboot快速的实现一个发送邮件的功能。

1.基础知识
什么是SMTP?

SMTP全称为Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP认证要求必须提供账号和密码才能登陆服务器,其设计目的在于避免用户受到垃圾邮件的侵扰。

什么是POP3?

POP3全称为Post Office Protocol 3(邮局协议),POP3支持客户端远程管理服务器端的邮件。POP3常用于“离线”邮件处理,即允许客户端下载服务器邮件,然后服务器上的邮件将会被删除。目前很多POP3的邮件服务器只提供下载邮件功能,服务器本身并不删除邮件,这种属于改进版的POP3协议。

2.传输协议
SMTP协议
发送邮件:我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

POP3协议
接收邮件:我们通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。

3.进阶知识
什么是JavaMailSender和JavaMailSenderImpl?
JavaMailSender和JavaMailSenderImpl 是Spring官方提供的集成邮件服务的接口和实现类,以简单高效的设计著称,目前是Java后端发送邮件和集成邮件服务的主流工具。

如何通过JavaMailSenderImpl发送邮件?
非常简单,直接在业务类注入JavaMailSenderImpl并调用send方法发送邮件。其中简单邮件可以通过SimpleMailMessage来发送邮件,而复杂的邮件(例如添加附件)可以借助MimeMessageHelper来构建MimeMessage发送邮件。
例如:

点击查看代码
    @Autowired
    private JavaMailSenderImpl mailSender;

    public void sendMail() throws MessagingException {
        //简单邮件
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom("[email protected]");
        simpleMailMessage.setTo("[email protected]");
        simpleMailMessage.setSubject("Happy New Year");
        simpleMailMessage.setText("新年快乐!");
        mailSender.send(simpleMailMessage);

        //复杂邮件
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
        messageHelper.setFrom("[email protected]");
        messageHelper.setTo("[email protected]");
        messageHelper.setSubject("Happy New Year");
        messageHelper.setText("新年快乐!");
        messageHelper.addInline("doge.gif", new File("xx/xx/doge.gif"));
        messageHelper.addAttachment("work.docx", new File("xx/xx/work.docx"));
        mailSender.send(mimeMessage);
    }

为什么JavaMailSenderImpl 能够开箱即用 ?
所谓开箱即用其实就是基于官方内置的自动配置,翻看源码可知晓邮件自动配置类(MailSenderPropertiesConfiguration) 为上下文提供了邮件服务实例(JavaMailSenderImpl)。具体源码如下:

点击查看代码
@Configuration
@ConditionalOnProperty(prefix = "spring.mail", name = "host")
class MailSenderPropertiesConfiguration {
    private final MailProperties properties;
    MailSenderPropertiesConfiguration(MailProperties properties) {
        this.properties = properties;
    }
    @Bean
    @ConditionalOnMissingBean
    public JavaMailSenderImpl mailSender() {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        applyProperties(sender);
        return sender;
    }
<details>
<summary>点击查看代码</summary>

</details>
``` ```

标签:POP3,Springboot,JavaMailSenderImpl,messageHelper,发送,服务器,邮件
From: https://www.cnblogs.com/codeLearn/p/17925920.html

相关文章

  • 基于SpringBoot的人才招聘网站
    项目源码获取方式放在文章末尾处项目技术数据库:Mysql5.7或8.0数据表:16张开发语言:Java(jdk1.8)开发工具:idea前端技术:layui后端技术:springboot附文档 功能简介项目获取关键字:招聘该项目是一个人才招聘网站,页面分为前台招聘页和后台管理,具体功能菜单如下:前台首页    求职者   ......
  • 基于SpringBoot的人事管理系统
    项目源码获取方式放在文章末尾处项目技术数据库:Mysql5.7或8.0数据表:11张开发语言:Java(jdk1.8)开发工具:idea前端技术:html后端技术:springboot 功能简介项目获取关键字:人事该项目是一个人事管理系统,角色分为管理员和员工,具体功能菜单如下:管理员端    主页    员工管理   ......
  • Hzero教程:创建基于hzero的springboot单体maven项目完整步骤
    创建项目更新时间:2023-12-0115:38:30介绍项目是基于Springboot的maven项目,本章节介绍怎样创建基于HZERO平台的项目。新建maven项目添加项目依赖添加默认配置文件创建maven项目本地新建一个空的maven项目hzero-todo-service。$mkdir-phzero-todo-service$cdhzero-tod......
  • 4、SpringBoot2之整合SpringMVC
    创建名为springboot_springmvc的新module,过程参考3.1节4.1、重要的配置参数在springboot中,提供了许多和web相关的配置参数(详见官方文档),其中有三个比较重要:4.1.1、server.port该配置参数用于设置web应用程序的服务端口号,默认值为80804.1.2、server.servlet.cont......
  • 委托协议栈发送接受数据响应
    前景提要上一篇文章说过网络收发功能是委托操作系统实现的,这里的委托就是指委托操作系统的协议栈,和DNS查询一样,建立连接和通信上层也需要使用到Socket的,Socket用于提供计算机之间连接通信的管道,大致示意图如下所示:上图表示收发数据的主要思路,那么要通信就需要先建立这条管道(也叫......
  • 策略模式进行发送短信
    业务场景​ 查询数据库的配置表,看配置进行选择不同公司的短信服务代码策略代码//策略接口publicinterfaceSmsSendStrategy{voidsendSms(Stringphone,Stringtemplate,Map<String,String>map);}//腾讯短信实现策略@ComponentpublicclassTencentSmsimpl......
  • 基于Feigh发送Http请求,替代RestTemplate
    下载依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>需要在启动类上开启配置,Feigh默认自带负载均衡配置@SpringBootApplication@EnableFeignClientspublic......
  • 基于SpringBoot+Vue的文理医院预约挂号系统设计实现(源码+lw+部署文档+讲解等)
    (文章目录)前言:heartpulse:博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌:heartpulse:......
  • Springboot下PageHelper分页不生效问题
    今天在做一个小项目,引入PageHelper时踩了一个坑,记录一下。解决方案参考:SpringBoot+MyBatis使用pagehelper分页插件及其注意事项(含解决分页不生效问题)环境:SpringBoot3.2.0JDK17Postgresql15PageHelper1.2.12依赖<dependency><groupId>com.github.pagehelper</......
  • springboot_3.2_freemark_基础环境配置
    springboot_3.2_freemark_基础环境配置一、前言二、环境三、相关资料四、目标五、默认配置项六、构建springboot3.2项目6.1pom.xml内容:6.2启动类6.3添加ftlh模板6.4controller内容6.5bootstrap.yml配置七、总结一、前言FreeMarker是一款模板引擎:即一种基于模板和要改变的......