当前位置: 首页 > news >正文

spring boot3整合邮件服务实现邮件发送功能

⛰️个人主页:     蒾酒

🔥系列专栏:《spring boot实战》


目录

内容概要

开通服务

依赖引入

配置属性

创建邮件发送工具类

测试


  最近发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。

    点击跳转到学习网站

内容概要

本文介绍了spring boot整合email服务,实现发送验证码,邮件(普通文本邮件、静态资源邮件、附件邮件)。

坚持看完相信对你有帮助。

同时欢迎订阅springboot系列专栏,持续分享spring boot的使用经验。

开通服务

实现email服务需要先将自己的邮箱开通POP3/IMAP服务才可以通过该邮箱发送邮件,开通步骤如下:

这里以QQ邮箱为例

1.进入QQ邮箱官网

https://wx.mail.qq.com/

2.登录后点击设置

3.选择账号

找到 POP3/IMAP.....服务这里开启你的服务,这里我已经开启了的。

4.开启服务

开启成功会得到授权码 ,记住这个授权码。下面开始在spring boot中整合。

spring boot整合

1.依赖引入

pom.xml:

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

2.配置属性

application.yml:

修改成你自己的实际信息。

spring:#邮件服务配置mail:host: smtp.qq.com #邮件服务器地址protocol: smtp #协议username: 305462*****@qq.com #发送邮件的邮箱也就是你开通服务的邮箱password: fiwvcy******d #开通服务后得到的授权码default-encoding: utf-8 #邮件内容的编码

3.创建邮件发送工具类

使用@component注解标记为组件,可以在Service中注入使用。

里面一共定义了三种发送邮件方法:

  1. 发送纯文本的普通邮件,可以发送一些纯文本的消息以及验证码内容。
  2. 发送HTML格式的文本内容,可以发一些静态资源,图片,音频,视频等,也可以发验证码信息。
  3. 发送携带附件的邮件,比如word,excel,pdf文档或者其他文件。

具体可以根据业务需求调整代码。我实现的较为简单可以当个模板使用。

import jakarta.annotation.Resource;
import jakarta.mail.internet.MimeMessage;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;import java.io.File;
import java.util.Objects;/*** @author mijiupro*/
@Component
public class EmailUtil {@Resourceprivate JavaMailSender mailSender;@Value("${spring.mail.username}")private String from ;// 发件人/*** 发送一般邮件--无附件* @param to 收件人* @param subject 主题* @param content 内容* @return 是否成功*/@SneakyThrows(Exception.class)public boolean sendGeneralEmail(String subject, String content, String... to){// 创建邮件消息org.springframework.mail.SimpleMailMessage message = new org.springframework.mail.SimpleMailMessage();message.setFrom(from);// 设置收件人message.setTo(to);// 设置邮件主题message.setSubject(subject);// 设置邮件内容message.setText(content);// 发送邮件mailSender.send(message);return true;}/*** 发送带附件的邮件* @param to 收件人* @param subject 主题* @param content 内容* @param filePaths 附件路径* @return 是否成功*/@SneakyThrows(Exception.class)public boolean sendAttachmentsEmail(String subject, String content, String[] to, String[] filePaths) {// 创建邮件消息MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom(from);// 设置收件人helper.setTo(to);// 设置邮件主题helper.setSubject(subject);// 设置邮件内容helper.setText(content);// 添加附件if (filePaths != null) {for (String filePath : filePaths) {FileSystemResource file = new FileSystemResource(new File(filePath));helper.addAttachment(Objects.requireNonNull(file.getFilename()), file);}}// 发送邮件mailSender.send(mimeMessage);return true;}/*** 发送带静态资源的邮件* @param to 收件人* @param subject 主题* @param content 内容* @param rscPath 静态资源路径* @param rscId 静态资源id* @return 是否成功*/@SneakyThrows(Exception.class)public boolean sendInlineResourceEmail(String subject, String content, String to, String rscPath, String rscId) {// 创建邮件消息MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);// 设置发件人helper.setFrom(from);// 设置收件人helper.setTo(to);// 设置邮件主题helper.setSubject(subject);//html内容图片String contentHtml = "<html><body>这是邮件的内容,包含一个图片:<img src=\'cid:" + rscId + "\'>"+content+"</body></html>";helper.setText(contentHtml, true);//指定讲资源地址FileSystemResource res = new FileSystemResource(new File(rscPath));helper.addInline(rscId, res);mailSender.send(mimeMessage);return true;}}

4.编写测试用例测试

下面测试前两种发送邮件的方法。

测试发送普通文本邮件

import com.mijiu.commom.util.EmailUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class EmailTest {@Autowiredprivate EmailUtil emailUtil;@Testpublic void sendEmail() {//发送邮件boolean b = emailUtil.sendGeneralEmail("测试邮件", " 这是测试邮件", "你的邮箱@163.com");System.out.println(b);}
}

修改成发送目标邮箱运行代码测试即可。 

测试成功。

 测试发送图片邮件

import com.mijiu.commom.util.EmailUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class EmailTest {@Autowiredprivate EmailUtil emailUtil;@Testpublic void sendEmail() {// 发送图片邮件boolean b = emailUtil.sendInlineResourceEmail("测试邮件", " 这是测试邮件", "你的邮箱@163.com","C:\\Users\\mijiupro\\Desktop\\潮.jpg", "C:\\Users\\mijiupro\\Desktop\\潮.jpg");System.out.println(b);}
}

修改成发送目标邮箱运行代码测试即可。  

http://www.lryc.cn/news/355104.html

相关文章:

  • 算法刷题day54:搜索(一)
  • 深入了解Redis的过期策略和内存淘汰机制
  • 小白不知道怎么投稿?记住这个好方法
  • gRPC - Protocol Buffer 编译器安装
  • 【Linux】centos7下载安装Python3.10,下载安装openssl1.1.1
  • 通过 python 操作mongodb
  • 若依框架对于后端返回异常后怎么处理?
  • vs code怎么补全路径,怎么快捷输入文件路径
  • git分支开发主干合并流程
  • 01Python相关基础学习
  • InTouch历史报警、历史事件按时段查询,导出
  • 网络攻防概述(基础概念)
  • 了解Java垃圾收集
  • 快速搭建 WordPress 外贸电商网站指南
  • 网络编程 —— Http进度条
  • 5月26(信息差)
  • 【Redis】持久化操作详解
  • C#调用HttpClient.SendAsync报错:System.Net.Http.HttpRequestException: 发送请求时出错。
  • 大模型基础知识
  • 时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)
  • [8] CUDA之向量点乘和矩阵乘法
  • 音视频开发9 FFmpeg 解复用框架说明,重要知识点
  • 抖音小店出单之后怎么发货?抖店详细发货流程来了
  • Transformer详解(5)-编码器和解码器
  • 线程安全-3 JMM
  • 4 CSS的 变换、过渡与动画
  • 前端基础入门三大核心之JS篇:掌握数字魔法 ——「累加器与累乘器」的奥秘籍【含样例代码】
  • git clone 出现的问题
  • Vue2和Vue3生命周期的对比
  • 全面解析Java.lang.ClassCastException异常