Spring Boot 2.X(十三):邮件服务

简介: 前言 邮件服务在开发中非常常见,比如用邮件注册账号、邮件作为找回密码的途径、用于订阅内容定期邮件推送等等,下面就简单的介绍下邮件实现方式。 准备 一个用于发送的邮箱,本文是用腾讯的域名邮箱,可以自己搞一个域名绑定下,登录地址:http://domain.

前言

邮件服务在开发中非常常见,比如用邮件注册账号、邮件作为找回密码的途径、用于订阅内容定期邮件推送等等,下面就简单的介绍下邮件实现方式。

邮件服务实现

1.添加依赖

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

2.配置文件

spring.mail.host=smtp.qq.com
spring.mail.username=zwqh@clover1314.com
spring.mail.password=*****
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

3.实现示例

@Service
public class MailTool {
    
    @Value("${spring.mail.username}")
    private String from;

    @Autowired
    private JavaMailSender mailSender;

    /**
     * 发送邮件
     * 
     * @return
     */
    public boolean send() {
        try {
            SimpleMailMessage message = new SimpleMailMessage();
            message.setFrom(from);//发送者
            message.setTo("zwqh@clover1314.com");//接受者
            message.setCc("sohuniuer@sina.com");// 抄送
            message.setSubject("邮件主题"); //邮件主题
            message.setText("这里是邮件内容");//邮件内容
            mailSender.send(message);
            System.out.println("邮件发送成功");
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 发送富文本邮件
     * 
     * @return
     */
    public boolean sendHtml() {
        // 使用 JavaMail 的 MimeMessage,支持更多复杂的邮件格式和内容
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        try {
            // 创建 MimeMessageHelper 对象,处理 MimeMessage 辅助类
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            // 使用辅助类 MimeMessage 设定参数
            helper.setFrom(from);
            helper.setTo("zwqh@clover1314.com");
            helper.setBcc("sohuniuer@sina.com");//密送
            helper.setSubject("富文本邮件主题");
            helper.setText("<h1>这是富文本邮件内容标题</h1><p style='color:red;'>这里是段落一</p><p style='color:orange;'>这里是段落二</p>",
                    true);        
            mailSender.send(mimeMessage);
            System.out.println("邮件发送成功");
            return true;
        } catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }
    }
    /**
     * 发送富文本带附件的邮件
     * @return
     */
    public boolean sendHtmlWithAttach() {
        // 使用 JavaMail 的 MimeMessage,支持更多复杂的邮件格式和内容
        MimeMessage mimeMessage = mailSender.createMimeMessage();

        try {
            // 创建 MimeMessageHelper 对象,处理 MimeMessage 辅助类
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setFrom(from);
            helper.setTo("zwqh@clover1314.com");
            helper.setSubject("富文本带附件的邮件主题");
            helper.setText("<h1>这是富文本邮件内容标题</h1><p style='color:red;'>这里是段落一</p><p style='color:orange;'>这里是段落二</p>",
                    true);
            //加载文件资源作为附件
            ClassPathResource file=new ClassPathResource("static/avatar2.jpg");
            //添加附件,并重命名
            helper.addAttachment("附件.jpg", file);
            mailSender.send(mimeMessage);
            System.out.println("邮件发送成功");
            return true;
        } catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }

    }

}

4.Controller 用于测试

@RestController
public class MailController {

    @Autowired
    private MailTool mailTool;
    
    @RequestMapping("/send")
    public String send() {
        mailTool.send();
        return "send success";
    }
    
    @RequestMapping("/sendHtml")
    public String sendHtml() {
        mailTool.sendHtml();
        return "sendHtml success";
    }
    
    @RequestMapping("/sendHtmlWithAttach")
    public String sendHtmlWithAttach() {
        mailTool.sendHtmlWithAttach();
        return "sendHtmlWithAttach success";
    }
    
    
}

5.测试效果

示例代码

github

码云

非特殊说明,本文版权归 朝雾轻寒 所有,转载请注明出处.

原文标题:Spring Boot 2.X(十三):邮件服务

原文地址: https://www.zwqh.top/article/info/22

如果文章对您有帮助,请扫码关注下我的公众号,文章持续更新中...

相关文章
|
监控 负载均衡 Java
深入理解Spring Cloud中的服务网关
深入理解Spring Cloud中的服务网关
|
人工智能 Java Serverless
【MCP教程系列】搭建基于 Spring AI 的 SSE 模式 MCP 服务并自定义部署至阿里云百炼
本文详细介绍了如何基于Spring AI搭建支持SSE模式的MCP服务,并成功集成至阿里云百炼大模型平台。通过四个步骤实现从零到Agent的构建,包括项目创建、工具开发、服务测试与部署。文章还提供了具体代码示例和操作截图,帮助读者快速上手。最终,将自定义SSE MCP服务集成到百炼平台,完成智能体应用的创建与测试。适合希望了解SSE实时交互及大模型集成的开发者参考。
9587 60
|
Java Spring
Spring boot 运行服务jar外配置配置文件方式总结
Spring boot 运行服务jar外配置配置文件方式总结
1453 0
|
2月前
|
Prometheus 监控 Cloud Native
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务
Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务实现步骤
|
6月前
|
人工智能 自然语言处理 Java
对话即服务:Spring Boot整合MCP让你的CRUD系统秒变AI助手
本文介绍了如何通过Model Context Protocol (MCP) 协议将传统Spring Boot服务改造为支持AI交互的智能系统。MCP作为“万能适配器”,让AI以统一方式与多种服务和数据源交互,降低开发复杂度。文章以图书管理服务为例,详细说明了引入依赖、配置MCP服务器、改造服务方法(注解方式或函数Bean方式)及接口测试的全流程。最终实现用户通过自然语言查询数据库的功能,展示了MCP在简化AI集成、提升系统易用性方面的价值。未来,“对话即服务”有望成为主流开发范式。
5196 7
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
242 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
8月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
2179 17
Spring Boot 两种部署到服务器的方式
|
7月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
400 7
|
6月前
|
Java 数据库 微服务
微服务——SpringBoot使用归纳——Spring Boot中的项目属性配置——指定项目配置文件
在实际项目中,开发环境和生产环境的配置往往不同。为简化配置切换,可通过创建 `application-dev.yml` 和 `application-pro.yml` 分别管理开发与生产环境配置,如设置不同端口(8001/8002)。在 `application.yml` 中使用 `spring.profiles.active` 指定加载的配置文件,实现环境快速切换。本节还介绍了通过配置类读取参数的方法,适用于微服务场景,提升代码可维护性。课程源码可从 [Gitee](https://gitee.com/eson15/springboot_study) 下载。
234 0