springboot实现发送邮件开箱即用

springboot实现发送邮件开箱即用

环境

jdk17

springboot版本3.2.1

依赖包

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

yml配置

我用的是qq邮箱,port是465

如果用的是其他的邮箱,自己修改这个端口,可能是25

ssl:true这个必须配置,不加会报错

不要复制,自己输,复制格式会出错
邮箱就自己的邮箱
秘密要开启stmp的时候系统给那个,不是自己设置的qq邮箱秘密

java 复制代码
spring:
  mail:
    host: smtp.qq.com
    port: 465
    username: xxxx@qq.com
    password: xxxx
    default-encoding: UTF-8
    properties:
      mail:
        smtp:
          auth: true
          ssl:
            enable: true

Service层

把setFrom里的邮箱换成自己的,就yml中配置那个

java 复制代码
package com.example.demo;

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 sendSimpleEmail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("xxx@qq.com");
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);

        javaMailSender.send(message);
    }
}

Controller层

to后面的是收件人地址

java 复制代码
package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/email")
public class EmailController {
    @Autowired
    private EmailService emailService;

    @GetMapping("/send")
    public String sendEmail() {
        String to = "xxx@qq.com";
        String subject = "邮件提醒";
        String text = "这是一条测试邮件";

        emailService.sendSimpleEmail(to, subject, text);

        return "邮件发送成功";
    }
}

测试

用postman直接请求对应的接口地址

不需要任何参数

测试结果如下

相关推荐
chools15 分钟前
Java后端拥抱AI开发之个人学习路线 - - Spring AI【第一期】
java·人工智能·学习·spring·ai
IT_陈寒21 分钟前
Vite热更新坑了我三天,原来配置要这么写
前端·人工智能·后端
小村儿33 分钟前
连载加餐01-claude code 源码泄漏 ---一起吃透 Claude Code,告别 AI coding 迷茫
前端·后端·ai编程
jeCA EURG33 分钟前
Spring Boot 2.7.x 至 2.7.18 及更旧的版本,漏洞说明
java·spring boot·后端
BduL OWED1 小时前
Redis之Redis事务
java·数据库·redis
FastBean1 小时前
BizAssert:一个轻量级、生产就绪的 Java 业务断言工具类
java·后端
疯狂的程序猴1 小时前
iOS 多技术栈混淆实现,跨平台 App 混淆拆解与组合
后端·ios
zhuiyisuifeng1 小时前
Node.js使用教程
java
李庆政3701 小时前
Reactor-core 响应式编程 spring-boot-starter-webflux
java·spring boot·reactor·响应式编程·reactor-core
是Smoky呢1 小时前
springAI+向量数据库+RAG入门案例
java·开发语言·ai编程