13.1 QQ邮箱

devtools/2024/10/21 3:49:09/

1. 邮箱发送

在这里插入图片描述

2. 准备工作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 整合SpringBoot

3.1 配置

依赖引入

        <!--        邮件服务--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

application.yml

spring:mail:host: smtp.qq.comport: 587username: QQ邮箱password: 授权码default-encoding: UTF-8properties:mail:debug: truesmtp:sockFactory:class: javax.net.ssl.SSLSocketFactory

在这里插入图片描述
在这里插入图片描述

其他

邮件对象
java">package com.ruoyi.common.vo;import lombok.Data;/*** 邮件对象*/
@Data
public class MailMessage {//发送者private String from;//接受者private String to;//抄送人private String cc;//主题private String subject;//内容private String text;//附件private MultipartFile file;
}

3.2 发送简单邮件

创建邮箱组件

java">package com.ruoyi.common.component;import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.vo.MailMessage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;import javax.annotation.Resource;/*** qq邮箱*/
@Component
public class MailService {@Value("${spring.mail.username}")private String mailFrom;@Resourceprivate JavaMailSender javaMailSender;/*** 发送邮件** @param from    发送者* @param to      收件人* @param cc      抄送人* @param subject 主题* @param content 内容*/public void sendSimpleMail(String from, String to, String cc, String subject, String content) {SimpleMailMessage mailMessage = new SimpleMailMessage();mailMessage.setFrom(mailFrom);mailMessage.setTo(to);mailMessage.setCc(cc);mailMessage.setSubject(subject);mailMessage.setText(content);javaMailSender.send(mailMessage);}public void sendSimpleMail(MailMessage message) {SimpleMailMessage mailMessage = new SimpleMailMessage();mailMessage.setFrom(mailFrom);String[] tos = StrUtil.splitToArray(message.getTo(), ";");mailMessage.setTo(tos);String[] ccs = StrUtil.splitToArray(message.getCc(), ";");mailMessage.setCc(ccs);mailMessage.setSubject(message.getSubject());mailMessage.setText(message.getText());javaMailSender.send(mailMessage);}
}

在这里插入图片描述

测试

控制层

java">    @Resourceprivate MailService mailService;/*** 发送邮件** @param user* @return*/@GetMapping("/mail")public AjaxResult mail(MailMessage mailMessage) {mailService.sendSimpleMail(mailMessage);return AjaxResult.success();}

在这里插入图片描述

在这里插入图片描述

3.3 发送带附件的邮件

邮箱组件

在这里插入图片描述

java">package com.ruoyi.common.component;import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.vo.MailMessage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;/*** qq邮箱*/
@Component
public class MailService {@Value("${spring.mail.username}")private String mailFrom;@Resourceprivate JavaMailSender javaMailSender;/*** 发送带附件的邮件** @param message* @param file*/public void sendAttachFileMail(MailMessage message, File file) {try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);mimeMessageHelper.setFrom(mailFrom);String[] tos = StrUtil.splitToArray(message.getTo(), ";");mimeMessageHelper.setTo(tos);String[] ccs = StrUtil.splitToArray(message.getCc(), ";");mimeMessageHelper.setCc(ccs);mimeMessageHelper.setSubject(message.getSubject());mimeMessageHelper.setText(message.getText());mimeMessageHelper.addAttachment(file.getName(), file);javaMailSender.send(mimeMessage);} catch (MessagingException e) {throw new RuntimeException(e);}}
}

在这里插入图片描述

使用及测试

java">    @Resourceprivate MailService mailService;/*** 发送邮件带附件** @param mailMessage* @return*/@PostMapping("/mailFile")public AjaxResult mailFile(MailMessage mailMessage, MultipartFile multipartFile) {try {// 获取文件名String fileName = multipartFile.getOriginalFilename();// 获取文件后缀(.xml)String suffix = fileName.substring(fileName.lastIndexOf("."));File file = File.createTempFile(fileName.substring(0, fileName.lastIndexOf(".")), suffix);multipartFile.transferTo(file);mailService.sendAttachFileMail(mailMessage, file);} catch (IOException e) {throw new RuntimeException(e);}return AjaxResult.success();}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.4 发送带图片资源的邮件

在这里插入图片描述

组件

java">package com.ruoyi.common.component;import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.vo.MailMessage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.web.util.HtmlUtils;import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;/*** qq邮箱*/
@Component
public class MailService {@Value("${spring.mail.username}")private String mailFrom;@Resourceprivate JavaMailSender javaMailSender;/*** 发送正文带图片的邮件** @param message*/public void sendMailWithirng(MailMessage message) {String[] srcPath = message.getSrcPath().split(",");String[] resIds = message.getResIds().split(",");if (srcPath.length != resIds.length) {throw new ServiceException("图片信息不全,发送失败!");}try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom(mailFrom);String[] tos = StrUtil.splitToArray(message.getTo(), ";");helper.setTo(tos);String[] ccs = StrUtil.splitToArray(message.getCc(), ";");helper.setCc(ccs);helper.setSubject(message.getSubject());helper.setText(message.getText(), true);for (int i = 0; i < srcPath.length; i++) {FileSystemResource fileSystemResource = new FileSystemResource(new File(srcPath[i]));helper.addInline(resIds[i], fileSystemResource);}javaMailSender.send(mimeMessage);} catch (MessagingException e) {throw new RuntimeException(e);}}
}

在这里插入图片描述

测试

java">    @Resourceprivate MailService mailService;/*** 发送正文带图片的邮件** @param mailMessage* @return*/@PostMapping("/sendMailWithirng")public AjaxResult sendMailWithirng(@Validated @RequestBody MailMessage mailMessage) {mailService.sendMailWithirng(mailMessage);return AjaxResult.success();}

3.5 使用 FreeMarker 构建邮件模报

在这里插入图片描述

依赖

java">        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency>

组件

java">package com.ruoyi.common.component;import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.vo.MailMessage;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.springframework.web.util.HtmlUtils;import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;/*** qq邮箱*/
@Component
public class MailService {@Value("${spring.mail.username}")private String mailFrom;@Resourceprivate JavaMailSender javaMailSender;/*** 使用 FreeMarker 构建邮件模报** @param message*/public void sendHtmlMail(MailMessage message) {try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom(mailFrom);String[] tos = StrUtil.splitToArray(message.getTo(), ";");helper.setTo(tos);String[] ccs = StrUtil.splitToArray(message.getCc(), ";");helper.setCc(ccs);helper.setSubject(message.getSubject());helper.setText(message.getText(), true);javaMailSender.send(mimeMessage);} catch (MessagingException e) {throw new RuntimeException(e);}}
}

邮件模板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.6 使用 Thymeleaf 构建邮件模板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

*************************************************


http://www.ppmy.cn/devtools/32261.html

相关文章

电力负荷超前96步预测,采用2024最新鹭鹰算法优化ELM实现,MATLAB代码

本期电力负荷预测数据来源为&#xff1a;《第九届电工数学建模竞赛试题_2016》 数据概况如下&#xff1a; 简介 本期内容&#xff1a; ①对电力负荷数据进行简单综合处理&#xff0c;划分训练集和测试集 ②采用标准的极限学习机ELM实现电力负荷预测 ③采用2024年最新鹭鹰算法优…

开源、轻量、易用的服务器实时监控工具:哪吒探针

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 哪吒探针是一个开源、轻量、易用的服务器监控、运维工具&#xff0c;它有以下几个特点&#xff1a; 一键安装&#xff1a;可以一键安装面板与 Agent&#xff0c;并且支持 Linux、Windows、MacOS、OpenWRT…

【LAMMPS学习】八、基础知识(5.5)极化模型

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

Linux下网络编程-基于多任务的简易客户端

Linux下网络编程-基于多任务的简易客户端 //沿用之前的代码修改即可 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <signal.h> #include <sys/wait.h> #include <arpa/inet.h> #incl…

国家开放大学2024年春《地基基础》机考网考期末复习资料参考答案

答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 判断题 1、初步确定桩型和桩长以后&#xff0c;应根据单桩…

锂电池SOH预测 | 基于CNN-GRU的锂电池SOH预测(matlab)

锂电池SOH预测 锂电池SOH预测完整代码锂电池SOH预测 锂电池的SOH(状态健康度)预测是一项重要的任务,它可以帮助确定电池的健康状况和剩余寿命,从而优化电池的使用和维护策略。 SOH预测可以通过多种方法实现,其中一些常用的方法包括: 容量衰减法:通过监测电池的容量衰减…

基于yolov8的苹果腐败检测系统,系统既支持图像检测,也支持视频和摄像实时检测(pytorch框架)【python源码+UI界面+功能源码详解】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; 基于yolov8的苹果腐败检测系统&#xff0c;系统既支持图像检测&#xff0c;也支持视频和摄像实时检测_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov8的苹果腐败检测系统是在pytorc…

苍穹外卖项目

Day01 收获 补习git Git学习之路-CSDN博客 nginx 作用&#xff1a;反向代理和负载均衡 swagger Swagger 与 Yapi Swagger&#xff1a; 可以自动的帮助开发人员生成接口文档&#xff0c;并对接口进行测试。 项目接口文档网址&#xff1a; ​​​​​​​http://localhost:808…