当前位置:   article > 正文

SpringBoot中实现发送邮件

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>
  • 1
  • 2
  • 3
  • 4
  • 5

获取依赖其他版本的官网: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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
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);  // 发送邮件
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

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!";
    }
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/517547
推荐阅读
相关标签
  

闽ICP备14008679号