Spring Boot实现发邮件功能

在Spring Boot项目中实现发送邮件的功能,要用到Spring框架提供的spring-boot-starter-mail依赖。

1. 添加依赖

首先,在你的pom.xml文件中添加spring-boot-starter-mail依赖:

复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

2. 配置邮件属性

application.yml文件中配置邮件服务器的相关属性,例如:

复制代码
spring:
  mail:
    host: smtp.example.com
    port: 587
    username: yourusername@example.com
    password: yourpassword
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true

3. 创建邮件发送服务

创建一个服务类来发送邮件。你可以使用JavaMailSender接口来实现这个功能。以下是一个简单的示例:

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

@Service
public class EmailService {
    
    @Autowired
    private JavaMailSender javaMailSender;
    
    public void sendSimpleMessage(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage(); 
        message.setFrom("yourusername@example.com"); // 发件人邮箱地址,需要与配置的一致或配置为null,由服务器决定发件人地址。
        message.setTo(to); 
        message.setSubject(subject); 
        message.setText(text); 
        javaMailSender.send(message); // 发送邮件
    }
}

4. 使用邮件发送服务

现在你可以在你的Spring Boot应用中的任何地方使用EmailService来发送邮件了。例如,在一个控制器中:

复制代码
java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EmailController {
    @Autowired
    private EmailService emailService;
    
    @GetMapping("/sendEmail")
    public String sendEmail(@RequestParam String to, @RequestParam String subject, @RequestParam String text) {
        emailService.sendSimpleMessage(to, subject, text); // 发送邮件的方法调用。
        return "Email sent!"; // 返回一个简单的响应。
    }
}

5. 测试你的邮件发送功能。

你可以通过访问/sendEmail?to=recipient@example.com&subject=Test&text=Hello%20World!来测试你的邮件发送功能。确保你的邮件服务器配置正确,并且你有权发送邮件到指定的邮箱地址。如果你使用的是Gmail或其他需要OAuth2认证的服务,你可能需要额外的配置来支持这些认证方式。例如,使用Google的OAuth2认证,你可以使用spring-boot-starter-oauth2-client和相应的配置来处理认证。 具体实现可以查阅Google的OAuth2文档和Spring的官方文档获取更详细的信息。

相关推荐
存在的五月雨5 小时前
SpringBoot后端限制重复提交
java·spring boot·后端
Sam_Deep_Thinking5 小时前
一次线程池线上故障复盘:四层防线如何避免数据丢失
java·面试·程序员
paopaokaka_luck5 小时前
基于Springboot3+Vue3的宠物殡葬管理系统(webSocket实时通讯、接入腾讯地图、支付宝沙盒支付、Echarts图形化分析)
java·开发语言·网络·后端
前鼻音太阳熊5 小时前
【MES系统】MES为什么需要SSE?从设备实时监控谈Spring Boot流式推送设计
java·spring boot·后端
Lhappy嘻嘻6 小时前
网络初识|基础入门:局域网广域网、IP 端口、TCP/IP 五层模型与封装解封装全过程
java·开发语言·网络·笔记·网络协议·tcp/ip
Java面试题总结6 小时前
区间树:反向映射的前置数据结构
java·前端·数据结构
尚早立志6 小时前
六)Spring Boot 源码研读之prepareContext 准备上下文
java·spring boot·后端·spring
Dovis(誓平步青云)7 小时前
《Linux CPU频率为何忽高忽低:cpufreq、idle状态与性能抖动教程》
linux·运维·服务器·spring boot·后端·生成对抗网络
Lhappy嘻嘻14 小时前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
伊玛目的门徒14 小时前
试用leetcode之典中典 二数之和问题
java·算法·leetcode