SpringBoot中实现发送邮件

概要

在Spring Boot中发送电子邮件相对简单。你可以使用Spring的邮件支持来实现这一点。

步骤:

1.添加依赖:首先,需要在你的pom.xml文件中添加Spring Boot的邮件发送器依赖。
2. 配置邮件服务器:在application.properties或application.yml中配置邮件服务器的相关信息。
3. 编写发送邮件的代码:创建一个服务类来封装邮件发送的逻辑。

JavaMailSender接口

在Spring框架中,JavaMailSender 是一个接口,用于发送电子邮件 。

Spring Boot的spring-boot-starter-mail模块提供了自动化配置,简化了在Spring Boot应用程序中发送电子邮件的设置过程。

当你添加了spring-boot-starter-mail依赖后,Spring Boot会自动配置JavaMailSender实例,并根据application.yml文件中的属性来配置这个实例。你可以直接在需要发送邮件的地方通过@Autowired注解将JavaMailSender实例注入到你的类中,然后使用它来发送邮件。
在这里插入图片描述

SpringBoot中实现发送邮件

第一步添加依赖

注意:我是基于springboot 2.7.17

     <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-mail</artifactId>
           <version>2.7.1</version>
     </dependency>

获取依赖其他版本的官网:Spring Boot Starter Mail
在这里插入图片描述

配置邮件服务器

QQ邮箱授权码如何获取

在这里插入图片描述

springboot中配置
spring:
  mail:
    host: smtp.qq.com  # qq的邮件服务器主机地址 【163网易邮箱的是smtp.163.com】
    username: 58963727@qq.com  # 登录邮件服务器的邮箱【自己的邮箱】
    password: axqyweertcentfcy  # 授权码
    port: 587  # 邮件服务器端口号  【163网易邮箱的是465】
    smtp:
      auth: true  # 是否需要身份验证
      starttls.enabled: true  # 是否启用 STARTTLS 支持
    default-encoding: utf-8  # 默认邮件编码为 UTF-8
java代码实现

业务层

@Service
public class EmailService {   

    @Autowired
    private JavaMailSender emailSender;

    // 从属性文件中读取发件人地址
    @Value("${spring.mail.username}")
    private String from;

    /**
     * 发送简单文本邮件
     * @param to 收件人地址
     * @param subject 邮件主题
     * @param text 邮件内容
     */
    public void sendSimpleMessage(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);  // 设置发件人邮箱地址
        message.setTo(to);  // 设置收件人地址
        message.setSubject(subject);  // 设置邮件主题
        message.setText(text);  // 设置邮件内容
        emailSender.send(message);  // 发送邮件
    }
}

Controller层

@RestController
@RequestMapping
public class EmailController {

    @Autowired
    private EmailService emailService;

    @PostMapping("/sendEmail")
    public String sendEmail(@RequestBody EmailDTO emailDTO) {
        emailService.sendSimpleMessage(emailDTO.getTo(), emailDTO.getSubject(), emailDTO.getText());
        return "Email sent successfully!";
    }
}


接受前端传过来的json格式的数据

@Data
public class EmailDTO {
    private String to; //表示收件人的电子邮件地址
    private String subject; //表示邮件的主题
    private String text; //表示邮件的正文内容
}
效果

这里用POST测试,发送POST请求
在这里插入图片描述

用的网易163邮箱成功接收
在这里插入图片描述

相关推荐

  1. springboot发送邮件

    2024-04-30 20:34:04       26 阅读
  2. Springboot使用Hutool工具类实现邮件发送

    2024-04-30 20:34:04       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 20:34:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 20:34:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 20:34:04       82 阅读
  4. Python语言-面向对象

    2024-04-30 20:34:04       91 阅读

热门阅读

  1. MAKEFILE 从易到难

    2024-04-30 20:34:04       31 阅读
  2. 【华为OD机试】-(C卷+D卷)-2024最新真题目录

    2024-04-30 20:34:04       57 阅读
  3. 【个人博客搭建】(13)SqlSugar仓储实现

    2024-04-30 20:34:04       25 阅读
  4. 黑客眼中最简单的漏洞,弱口令暴力破解

    2024-04-30 20:34:04       29 阅读
  5. Spring中实现策略模式的几种方式

    2024-04-30 20:34:04       27 阅读
  6. Kafka集群搭建

    2024-04-30 20:34:04       36 阅读
  7. ndk编译android系统下运行的ffmpeg配置

    2024-04-30 20:34:04       33 阅读
  8. 使用通义千问,为汽车软件需求生成测试用例

    2024-04-30 20:34:04       28 阅读