spring-boot-starter-mail 定义邮件工具类EmailHelper

news2025/1/23 5:59:39

注意

  • 想把这个工具类定义成工具类,所以所有的方法都是静态方法,使用的变量处理参数理所当然都是静态变量
  • 期初使用的是@Autowired 和 @Value进行注解,但是这两个注解是依赖于实例,静态方法是不依赖实例的,所以 from 在发送邮件的时候一直是null(不知道@Autowired 为什么能注入成功)
    在这里插入图片描述
  • 改变思路:
  • 将类注解为@Component,确保能够被IOC容器检测到
  • 使用非静态方法代替直接注入,使用方法进行注入
@Component
public class EmailHelper {

    private static JavaMailSender mailSender;
    private static String from;

    @Autowired
    public void setJavaMailSender(JavaMailSender javaMailSender) {
        EmailHelper.mailSender = javaMailSender;
    }

    @Value("${spring.mail.username}")
    public void setFrom(String from) {
        EmailHelper.from = from;
    }
}

简易邮件

/**
  * 发送简易邮件
  * @param to 收件人
  * @param subject 主题
  * @param content 内容
  * @return 是否发送成功
  */
 public static   boolean sendEmail(String to, String subject, String content) {
     try {
         SimpleMailMessage mailMessage = new SimpleMailMessage();
         //设置发送人
         mailMessage.setFrom(from);
         //邮件主题
         mailMessage.setSubject(subject);
         //邮件内容:普通文件无法解析html标签
         mailMessage.setText(content);
         //收件人
         mailMessage.setTo(to);
         //发送邮件
         mailSender.send(mailMessage);
     } catch (MailException e) {
         throw new RuntimeException(e);
     }
     return true;
 }

群发简易邮件

/**
 * 群发邮件
 * @param tos 收件人列表
 * @param subject 主题
 * @param content 内容
 * @return 是否发送成功
 */
public static boolean sendEMailMass(List<String> tos, String subject, String content) {
    boolean result = true;
    for (String to : tos) {
        boolean b = sendEmail(to, subject, content);
        if (!b) {
            result = false;
        }
    }
    return result;
}

携带附件的邮件

群发携带附件的邮件

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

24年5月GPT-4o使用教程,一看就会(低配贾维斯?)

一、 GPT-4o 5月13日&#xff0c;GPT-4o发布&#xff0c;听说是低配钢铁侠的贾维斯&#xff1f;赶紧看一下~ 二、什么是GPT-4o GPT-4o&#xff08;“o”代表“omni”&#xff09;是迈向更自然的人机交互的一步——它接受文本、音频、图像和视频的任意组合作为输入&#xff0…

Microsoft Dataverse中的安全概念

Dataverse的一个关键特性是其丰富的安全模型&#xff0c;可以适应许多业务使用场景。只有当环境中存在Dataverse数据库时&#xff0c;此安全模型才会发挥作用。作为管理员&#xff0c;您可能不会自己构建整个安全模型&#xff0c;但通常会参与管理用户、确保他们拥有正确的配置…

OpenAI 最近发布的 GPT-4o 模型,作为其自然语言处理技术的最新突破,标志着人工智能领域的一个新纪元。

2024年5月14日&#xff0c;OpenAI推出了其最新的旗舰模型——**GPT-4o**。不同于传统的AI搜索引擎或预期中的GPT-5&#xff0c;GPT-4o在功能上取得了重大突破&#xff0c;将文本、视觉和音频理解融合在一个模型中。让我们深入了解这一革命性的AI。 “o”代表什么&#xff1f; …

案例实践 | 招商局集团基于长安链的双循环航运贸易应用

案例名称-招商局双循环航运贸易联盟链 ■ 建设单位 招商局集团 ■ 用户群体 货主企业、物流企业、基础设施运营商等各参与主体 ■ 应用成效 已赋能产业链上下游超1.2万家中小微企业&#xff0c;累计提供普惠金融超830亿元 案例背景 作为全球贸易大国&#xff0c;我国约…

使用numpy或pytorch校验两个张量是否相等

文章目录 1、numpy2、pytorch 做算法过程中&#xff0c;如果涉及到模型落地&#xff0c;那必然会将原始的深度学习的框架训练好的模型转换成目标硬件模型的格式&#xff0c;如onnx,tensorrt,openvino,tflite;那么就有对比不同格式模型输出的一致性&#xff0c;从而判断模型转换…

【LeetCode:23. 合并 K 个升序链表 + 链表 + 归并 + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Linux上编译安装和卸载软件

在maven官网下载maven时候&#xff0c;看到maven-3.9.5这个版本有2份安装包&#xff0c;一个是binaries&#xff0c;一个是source binaries是已编译好的文件&#xff0c;可以直接使用的版本&#xff1b;source是源代码版本&#xff0c;需要自己编译 源码的安装一般由这三个步…

齐护K210系列教程(二十七)_语音识别

语音识别 1.烧录固件和模型2.语音识别程序2.1训练并识别2.2使用本地文件语音识别 3.课程资源联系我们 1.烧录固件和模型 注&#xff1a;本应用只适用于有麦克风功能的型号&#xff1a;AIstart_pro、AIstart_掌机、AIstart_Mini, 其它型号不支持&#xff01; 机器码生成以及模…

集成了Gemini的Android Studio,如虎添翼

今天将Android Studio升级到最新版&#xff08;Jellyfish&#xff09;。发现在new features中有一条&#xff1a; Code suggestions with Gemini in Android Studio 打开路径为&#xff1a; View > Tool Windows > Gemini 支持多国语言&#xff0c;英文、中文都能正确理解…

网络安全人士必知的人工智能对抗模型MITRE ATLAS

图片由通义万相绘制 MITRE ATLAS™&#xff08;人工智能系统的对抗威胁格局&#xff09;是一个关于机器学习 (ML) 系统的对手战术、技术和案例研究的知识库&#xff0c;基于现实世界的观察、ML红队和安全小组的演示&#xff0c;以及学术研究的可能性状态。ATLAS 是仿照MITRE A…

ssm132医院住院综合服务管理系统设计与开发+vue

医院住院综合服务管理系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对医院住院信息管理混乱&…

【御控物联】物联网协议

文章目录 一、前言二、协议清单三、技术资料 一、前言 如果一个人想要和全球各个国家贸易&#xff0c;那这个人就得懂各个国家的语言或者全球通用语言&#xff0c;同样&#xff0c;在物联网的世界里&#xff0c;各家设备也都拥有自己的语言&#xff08;协议&#xff09;&#…

Edwards爱德华PHM3000培训PPT课件内容可见图片详情

Edwards爱德华PHM3000培训PPT课件内容可见图片详情

Spring初学入门(跟学笔记)

一、Spring概述 Spring是一款主流的Java EE轻量级开源框架。 Spring的核心模块&#xff1a;IoC&#xff08;控制反转&#xff0c;指把创建对象过程交给Spring管理 &#xff09;、AOP&#xff08;面向切面编程&#xff0c;在不修改源代码的基础上增强代码功能&#xff09; 二、…

JavaWeb--18 tlias-web-management 登录认证

登录认证 1 登录功能功能开发 2 登录校验2.1 问题分析2.2 会话技术CookieSession令牌技术 2.3 JWT令牌介绍生成和校验登录下发令牌 2.4 过滤器Filter拦截路径过滤器链 登录校验-Filter 2.5 拦截器InterceptorInterceptor详解执行流程 登录校验- Interceptor 3 异常处理3.1 当前…

网页封装App技术详解与小猪APP分发解决方案

移动互联网的浪潮中&#xff0c;网页封装App&#xff08;又称Hybrid App&#xff09;以其快速部署、成本效益高的特点&#xff0c;成为众多企业和开发者的选择。这种技术允许开发者将网页内容封装进原生App外壳&#xff0c;从而在不牺牲用户体验的前提下&#xff0c;实现跨平台…

常用五款文件加密软件|好用加密软件工具分享

随着信息化时代的到来&#xff0c;数据安全问题日益凸显&#xff0c;加密软件应运而生&#xff0c;成为了保护数据安全的重要手段。在市场上&#xff0c;众多加密软件层出不穷&#xff0c;各有千秋。本文将介绍几款常用的加密软件&#xff0c;分析它们的优缺点&#xff0c;以帮…

rocketmq的顺序消息开发注意事项

1. 参考消息重试&#xff0c;要对 MaxReconsumeTimes进行设置。之前就是因为没有进行设置&#xff0c;导致了队头阻塞问题。 rokcetmq和kafka一样&#xff0c;当顺序消息写入的多个队列中后&#xff0c;如果是顺序消息&#xff0c;当前的队列的队头一直消费失败的时候&#x…

Hive的窗口函数

定义&#xff1a; 聚合函数是针对定义的行集(组)执行聚集,每组只返回一个值.如sum()、avg()、max() 窗口函数也是针对定义的行集(组)执行聚集,可为每组返回多个值.如既要显示聚集前的数据,又要显示聚集后的数据.步骤&#xff1a; 1.将记录分割成多个分区. 2.在各个分区上调用窗…

使用Pixi.js 图片切换特效(图片分段下滑以及复原)

1.效果: 2.实现原理: 将图片按宽高切分为x*y(具体可以自己调整)个矩形区域&#xff0c;对每个顶点分配一个随机值noiseValue(-1到1之间),在顶点着色器中根据这个随机值而做出不同的y轴位移效果从而实现出分段的下滑或者复原的效果。 3.代码实现: 首先是顶点着色器的代码,其中…