SpringBoot实现邮件任务的步骤详解

 更新时间:2023年10月17日 10:18:13   作者:野生派蒙  
这篇文章主要介绍了SpringBoot实现邮件任务的步骤详解,使用Spring Boot实现QQ邮箱发送邮件具有快速集成、统一的开发体验、强大的维护和扩展能力、可靠的送达性和安全性等优势,可以帮助你快速构建稳定可靠的邮件发送功能,需要的朋友可以参考下

一、使用背景

邮件任务在实际应用开发中有很多应用场景。以下是一些常见的使用到邮件任务的情况:

  • 用户注册和验证:在用户注册过程中,可以通过邮件任务发送验证邮件,要求用户点击验证链接来确认账户。这样可以确保用户提供的邮箱是有效的,并且增加注册流程的安全性。
  • 密码重置:当用户忘记密码或需要重置密码时,可以通过邮件任务发送重置密码链接到用户注册的邮箱,让用户自行修改密码。这样可以方便用户重置密码,并提供额外的安全性保障。
  • 通知和提醒:在应用中,可以通过邮件任务发送通知和提醒给用户。例如,当用户完成某个操作(如购买、订阅、预约等),可以发送电子邮件确认订单或提供相关信息。
  • 定时报告和通知:对于某些业务系统,需要定时生成报告并通过邮件发送给相关人员。例如,每天生成销售报告并发送给销售团队,或者每周发送团队会议提醒等。
  • 营销和推广:企业可以使用邮件任务发送营销活动和推广信息给客户。通过优化邮件内容和目标客户群体,可以提高营销和推广的效果

综上所述,使用Spring Boot实现QQ邮箱发送邮件具有快速集成、统一的开发体验、强大的维护和扩展能力、可靠的送达性和安全性等优势,可以帮助你快速构建稳定可靠的邮件发送功能

二、邮件任务的优点

  • 集成简便:Spring Boot提供了丰富的开箱即用功能和自动配置,可以方便地集成QQ邮箱发送邮件的功能,减少了手动配置和繁琐的编码工作,让开发人员能够更专注于业务逻辑的实现。
  • 开发效率高:Spring Boot提供了一套简洁、统一的开发框架和规范,能够简化开发流程,提高开发效率。它提供了依赖管理、资源配置、依赖注入等功能,让开发人员更专注于业务代码的编写。
  • 生态丰富:Spring Boot作为Spring家族的一员,有着庞大的社区和广泛的生态系统。在使用Spring Boot开发过程中,可以利用Spring生态系统的其他组件和工具,如Spring MVC、Spring Data等,来进一步提升开发效率。
  • 强大的功能扩展能力:Spring Boot具有良好的可扩展性,可以通过自定义配置、编写插件、集成其他框架等方式来满足特定需求。它提供了一套丰富的开发工具和插件,可以快速地实现各种复杂的业务逻辑和需求。
  • 测试友好:Spring Boot对单元测试和集成测试提供了良好的支持,可以使用JUnit、Mockito等测试工具进行测试。这样可以确保邮件发送功能的稳定性和正确性,提高代码质量。
  • 可靠性和安全性:QQ邮箱作为一个知名的邮件服务提供商,拥有稳定可靠的邮件发送服务。通过Spring Boot的配置和集成,可以确保邮件发送过程中的身份验证和数据传输的安全性

三、SpringBoot 实现邮件任务

接下来开始实操,本文将讲述,SpringBoot 实现QQ邮箱发送,如果想使用其他的邮箱修改application.yml 配置即可

项目结构

在这里插入图片描述

pom.xml

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

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

配置QQ邮箱的授权码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

application.yml

spring:
  mail:
    username: 2642503078@qq.com   # 邮箱账号
    password: jhgndlzfhzaydjhg    # 邮箱密码,授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码,防止密码明文,保护自身的安全性
    host: smtp.qq.com             # 邮箱的服务,如果使用其他的邮箱修改这个配置即可
    properties:
      mail:
        smtp:
          ssl:
            enable: true          # 开启加密验证

service类

  • 实现文本邮件发送
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * 邮件发送服务类
 */
@Service
public class emailSenderService {
    // 注入 mail 实体,所有邮件相关的操作,都在这个类上
    @Resource
    private JavaMailSenderImpl mailSender;

    /**
     * 发送文本邮件
     */
    public void textMail() {
        // 简单邮件消息类
        SimpleMailMessage simpleMessage = new SimpleMailMessage();
        // 邮件主题
        simpleMessage.setSubject("SpringBoot 实现文本邮件发送~");
        // 邮件内容
        simpleMessage.setText("一个文本文件已发送到你的QQ邮箱上~");
        // 发送人
        simpleMessage.setTo("2642503078@qq.com");
        // 接收人
        simpleMessage.setFrom("2642503078@qq.com");

        // 开始发送
        mailSender.send(simpleMessage);
    }

}
  • 实现超文本邮件发送
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

/**
 * 邮件发送服务类
 */
@Service
public class emailSenderService {
    // 注入 mail 实体,所有邮件相关的操作,都在这个类上
    @Resource
    private JavaMailSenderImpl mailSender;

    /**
     * 发送超文本邮件
     */
    public void hyperTextMail() throws MessagingException {
        // 负责邮件消息类
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        // 参数1:消息类
        // 参数2:是否支持发送附件
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
        // 邮件主题
        mimeMessageHelper.setSubject("SpringBoot 实现超文本邮件发送~");
        // 参数1:邮件内容
        // 参数2:是否支持html
        mimeMessageHelper.setText("<h1 style='color:blue>'一个文本文件已发送到你的QQ邮箱上~</h1>",true);
        // 附件
        // 参数1:发送到邮件的文件名
        // 参数2:本地文件的绝对路径,不知道在哪的,右键文件点属性有个位置,复制下来,加上文件名
        mimeMessageHelper.addAttachment("SpringBoot01.jpg", new File("C:\\Users\\xzh\\Desktop\\SpringBoot01.jpg"));
        mimeMessageHelper.addAttachment("SpringBoot02.jpg", new File("C:\\Users\\xzh\\Desktop\\SpringBoot02.jpg"));
        // 发送人
        mimeMessageHelper.setTo("2642503078@qq.com");
        // 接收人
        mimeMessageHelper.setFrom("2642503078@qq.com");
        // 开始发送
        mailSender.send(mimeMessage);
    }
}

启动类

@SpringBootApplication
public class EmailApplication implements ApplicationRunner {
	@Resource
	private emailSenderService emailService;

	public static void main(String[] args) {
		SpringApplication.run(EmailApplication.class, args);
	}

	@Override
	public void run(ApplicationArguments args) throws Exception {
		// 当项目启动就会执行
		emailService.textMail();
	}
}

启动项目,测试

文本邮件

在这里插入图片描述

超文本邮件

在这里插入图片描述

到此这篇关于SpringBoot实现邮件任务的步骤详解的文章就介绍到这了,更多相关SpringBoot邮件任务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JUnit 5中扩展模型的深入理解

    JUnit 5中扩展模型的深入理解

    几乎所有的Java 开发人员都会使用JUnit 来做测试,但其实很多自动化测试人员也会使用Junit 。下面这篇文章主要给大家介绍了关于JUnit 5中扩展模型的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-08-08
  • java判断回文数示例分享

    java判断回文数示例分享

    这篇文章主要介绍了java判断回文数示例,需要的朋友可以参考下
    2014-03-03
  • java利用easyexcel实现导入与导出功能

    java利用easyexcel实现导入与导出功能

    这篇文章主要介绍了java利用easyexcel实现导入与导出功能,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-09-09
  • Java 实现实时监听文件夹是否有新文件增加并上传服务器功能

    Java 实现实时监听文件夹是否有新文件增加并上传服务器功能

    本文中主要陈述一种实时监听文件夹中是否有文件增加的功能,可用于实际文件上传功能的开发。本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-09-09
  • Java编程中10个最佳的异常处理技巧

    Java编程中10个最佳的异常处理技巧

    这篇文章主要介绍了Java编程中10个最佳的异常处理技巧,在本文中,将讨论Java异常处理最佳实践,这些Java最佳实践遵循标准的JDK库,和几个处理错误和异常的开源代码,这还是一个提供给java程序员编写健壮代码的便利手册,需要的朋友可以参考下
    2015-01-01
  • 关于List、Map、Stream初始化方式

    关于List、Map、Stream初始化方式

    这篇文章主要介绍了关于List、Map、Stream初始化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Spring Cloud Gateway全局通用异常处理的实现

    Spring Cloud Gateway全局通用异常处理的实现

    这篇文章主要介绍了Spring Cloud Gateway全局通用异常处理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Javaweb EL自定义函数开发及代码实例

    Javaweb EL自定义函数开发及代码实例

    这篇文章主要介绍了Javaweb EL自定义函数开发及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • IDEA 配置 JRebel 热部署的方法(推荐)

    IDEA 配置 JRebel 热部署的方法(推荐)

    这篇文章主要介绍了IDEA 配置 JRebel 热部署的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Java线程池的分析和使用详解

    Java线程池的分析和使用详解

    本篇文章主要介绍了Java线程池的分析和使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-11-11

最新评论