Springboot发送邮件

博主介绍:✌全网粉丝3W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅开源项目免费哦(有vue2与vue3版本): 点击这里克隆或者下载 🍅

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12199600.html

目录

​编辑

一、获取授权码

1、以QQ邮箱为例,页面首部找到设置

二、SpringBoot集成邮件发送

1、环境配置

2、代码编写

三、测试邮件发送


一、获取授权码

1、以QQ邮箱为例,页面首部找到设置

2、开启POP3/SMTP服务

如果服务不是开启状态需要开启,服务开启状态可以点击管理服务去获取授权码。

 

 获取授权码这次本人需要绑定手机号,绑定手机后就可以点击生成授权码

 

二、SpringBoot集成邮件发送

1、环境配置
  • 添加依赖
<!-- springboot 邮件mail --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>${springboot.version}</version></dependency>
  • application.properties
# 邮件
spring.mail.default-encoding= utf-8
# 配置 SMTP 服务器地址
spring.mail.host= smtp.qq.com
#发送方邮件名
spring.mail.username= xxxx@qq.com
#授权码
spring.mail.password= xxxxxx
  • application.yml(与application.properties任选其一既可)
spring:#邮箱基本配置mail:#配置smtp服务主机地址host: smtp.qq.com#发送者邮箱username: xxxxxxx@qq.com#配置密码,注意不是真正的密码,而是刚刚申请到的授权码password: xxxxxxxxxxx#端口号465或587port: 587#默认的邮件编码为UTF-8default-encoding: UTF-8#其他参数properties:mail:# 配置SSL 加密工厂smtp:ssl:# 本地测试,先放开sslenable: falserequired: falsesocketFactory:class: javax.net.ssl.SSLSocketFactory# 开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误debug: true
2、代码编写
  • MailRequest实体
package com.ceam.exam.dto;import java.io.Serializable;/*** @author CeaM* 2023/7/17*/
public class MailRequest implements Serializable {/*** 接收人*/private String sendTo;/***  邮件主题*/private String subject;/***  邮件内容*/private String text;/***  附件路径*/private String filePath;public String getSendTo() {return sendTo;}public void setSendTo(String sendTo) {this.sendTo = sendTo;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getText() {return text;}public void setText(String text) {this.text = text;}public String getFilePath() {return filePath;}public void setFilePath(String filePath) {this.filePath = filePath;}
}
  • SendMailService
package com.ceam.web.components.service;import com.ceam.exam.dto.MailRequest;/*** @author CeaM* 2023/7/17*/
public interface SendMailService {/*** 简单文本邮件** @param mailRequest* @return*/void sendSimpleMail(MailRequest mailRequest);/*** Html格式邮件,可带附件** @param mailRequest* @return*/void sendHtmlMail(MailRequest mailRequest);
}
  • SendMailServiceImpl
package com.ceam.web.components.service.impl;import com.ceam.common.utils.AssertUtil;
import com.ceam.exam.dto.MailRequest;
import com.ceam.web.components.service.SendMailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.Date;/*** @author CeaM* 2023/7/17*/
@Slf4j
@Service
public class SendMailServiceImpl implements SendMailService {// 注入邮件工具类@Resourceprivate JavaMailSender javaMailSender;@Value("${spring.mail.username}")private String sendMailer;public void checkMail(MailRequest mailRequest) {AssertUtil.isNotEmpty(mailRequest,"邮件请求不能为空");AssertUtil.isNotBlank(mailRequest.getSendTo(), "邮件收件人不能为空");AssertUtil.isNotBlank(mailRequest.getSubject(), "邮件主题不能为空");AssertUtil.isNotBlank(mailRequest.getText(), "邮件收件人不能为空");}@Overridepublic void sendSimpleMail(MailRequest mailRequest) {SimpleMailMessage message = new SimpleMailMessage();checkMail(mailRequest);// 邮件发件人message.setFrom(sendMailer);// 邮件收件人 1或多个message.setTo(mailRequest.getSendTo().split(","));// 邮件主题message.setSubject(mailRequest.getSubject());// 邮件内容message.setText(mailRequest.getText());// 邮件发送时间message.setSentDate(new Date());javaMailSender.send(message);log.info("发送邮件成功:{}->{}",sendMailer,mailRequest.getSendTo());}@Overridepublic void sendHtmlMail(MailRequest mailRequest) {
//        MimeMessage message = javaMailSender.createMimeMessage();
//        checkMail(mailRequest);
//        try {
//            MimeMessageHelper helper = new MimeMessageHelper(message,true);
//            //邮件发件人
//            helper.setFrom(sendMailer);
//            //邮件收件人 1或多个
//            helper.setTo(mailRequest.getSendTo().split(","));
//            //邮件主题
//            helper.setSubject(mailRequest.getSubject());
//            //邮件内容
//            helper.setText(mailRequest.getText(),true);
//            //邮件发送时间
//            helper.setSentDate(new Date());
//
//            String filePath = mailRequest.getFilePath();
//            if (StringUtils.hasText(filePath)) {
//                FileSystemResource file = new FileSystemResource(new File(filePath));
//                String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
//                helper.addAttachment(fileName,file);
//            }
//            javaMailSender.send(message);
//            log.info("发送邮件成功:{}->{}",sendMailer,mailRequest.getSendTo());
//        } catch (MessagingException e) {
//            log.error("发送邮件时发生异常!",e);
//        }}
}
  • SendMailController
@RestController
@RequestMapping("/send-mail")
@Api(value = "发送邮件接口",tags = {"发送邮件接口"})
public class SendMailController {@Autowiredprivate SendMailService sendMailService;@PostMapping("/simple")public void SendSimpleMessage(@RequestBody MailRequest mailRequest) {sendMailService.sendSimpleMail(mailRequest);}@PostMapping("/html")public void SendHtmlMessage(@RequestBody MailRequest mailRequest) { sendMailService.sendHtmlMail(mailRequest);}
}

三、测试邮件发送

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27071.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

InstructGPT:语言模型的人类反馈指令对齐

论文标题&#xff1a;Training language models to follow instructions with human feedback论文链接&#xff1a;https://arxiv.org/abs/2203.02155论文来源&#xff1a;OpenAI 一、概述 大型语言模型&#xff08;Large language models&#xff0c;LLMs&#xff09;可以通过…

2023西南赛区ciscn -- do you like read

Attack 打开后一个商城页面 在login as admin那里有个登录页面&#xff0c;账号admin&#xff0c;密码爆破即可得到admin123 也可以在book.php?bookisbn1进行sql注入得到密码&#xff0c;这里发现是没有注入waf的 登录进来是一个Book List的管理页面&#xff0c;同时在审计源…

基于springboot的微信小程序宠物领养医院系统(源代码+数据库+10000字论文)085

基于springboot的微信小程序宠物领养医院系统(源代码数据库10000字论文)085 一、系统介绍 本项目有网页版和小程序端 本系统分为管理员、医生、用户三种角色 用户角色包含以下功能&#xff1a; 登录、注册、宠物领养、医生在线咨询、查看挂号、个人中心、密码修改、宠物寄…

【stable diffusion】保姆级入门课程-Stable diffusion(SD)介绍与安装

目录 0.学前准备 1.什么是AI绘画 2.当前主流的AI绘画工具 3.什么是SD(stable diffusion) 4.SD能做什么 1.文生图 2.图生图 3.AI换模特&#xff0c;背景 5.使用stable diffusion配置要求 6.环境配置与安装 需要注意的地方&#xff1a; 扩展知识&#xff1a; 1.pyth…

JVM运行时数据区——Java虚拟机栈

每个线程在运行时都会创建一个Java虚拟机栈&#xff0c;也是线程私有的&#xff0c;其内部包含一个个的栈帧&#xff0c;先进后出&#xff0c;对应着一个个方法的调用&#xff0c;运行完则弹出&#xff0c;所以不存在垃圾回收的问题&#xff0c;如果线程所需要的栈深度大于此线…

浅谈防火门监控系统在酒店防火安全中的重要应用

安科瑞 华楠 摘要&#xff1a;建筑防火问题已经引起人们的广泛关注&#xff0c;合理进行建筑消防设计成为了建筑设计的重要内容。防火门监控系统是建筑防火研究的新成果。对日常防火分区监控及发生火灾后对火势和有毒气体的控制起到关建作用。文章对防火门监控系统的组成和工…

vue项目中实现3D万花筒和3D文字旋转效果

一、万花筒 1、html部分 //万花筒html <div class"carousel" data-gap"368"><figure><div class"carouselItem" v-for"(item,index) in exhibitionList" :key"index"><div class"itemContent&q…

青翼科技自主研发4路AD子卡FMC137

FMC137是一款基于VITA57.4标准规范的JESD204B接口FMC子卡模块&#xff0c;该模块可以实现4路14-bit、2GSPS/2.6GSPS/3GSPS ADC采集功能。该板卡ADC器件采用ADI公司的AD9208芯片&#xff0c;&#xff0c;与ADI公司的AD9689可以实现PIN脚兼容。该ADC与FPGA的主机接口通过16通道的…

如何用smardaten无代码平台进行复杂逻辑编排?

目录 1、前言2、复杂逻辑编排是什么&#xff1f;3、服务编排-进销存&#xff08;1&#xff09;业务说明&#xff08;2&#xff09;设计说明1&#xff09;数据库设计2&#xff09;表单设计3&#xff09;列表设计4&#xff09;逻辑设计4.1 逻辑控制设计4.2 服务编排设计 4、使用体…

阿里云EMAS超级App助力Agmo电动车超级应用程序发布

近日&#xff0c;阿里云宣布与马来西亚本土数字方案专家Agmo控股&#xff08;Agmo Holdings Berhad&#xff0c;简称Agmo&#xff09;展开合作&#xff0c;签署谅解备忘录&#xff0c;联手推出马来西亚首个Agmo电动车超级应用程序。此次合作也标志着阿里云在中国以外的市场首次…

[QT编程系列-21]:基本框架 - QT常见数据结构:QString、QList、QVector、QMap、QHash、QSet、QPair详解

目录 1 QString 2 QList 3 QVector 4 QMap 5 QHash 6 QSet 7 QPair 1 QString QString是Qt中用于存储和操作字符串的类。它提供了丰富的字符串处理方法和功能。 以下是QString的一些主要特点和常用操作&#xff1a; 创建QString对象&#xff1a; QString str "H…

Activity引擎(初次学习与总结梳理全记录,包括易混淆知识点分析,常用报错解决方案等)

最近工作需要使用Acticity框架处理审批业务&#xff0c;简单了解后能虽能很快的上手&#xff0c;但是对于Activity的整体认识并不够&#xff0c;特此花费很多精力全面的学习并记录。包含对很多的概念的第一次理解过程&#xff1b;对知识点的混淆地方的梳理&#xff1b;对实践过…