springboot集成邮件发送的使用示例

springboot集成邮件发送的使用示例

  • 步骤概述
    • 1. 引入依赖
    • 2. 配置邮件发送
    • 3. 发送简单邮件
    • 4. 发送 HTML 邮件
    • 5. 发送带附件的邮件
    • 6. 定时邮件发送

使用 Spring Boot 发送邮件时,通常的应用场景包括用户注册、密码重置和各种验证流程。这里我将展示一个以验证码发送为例的实现,涵盖了邮件发送的基本配置和高级功能,如定时邮件发送、HTML 内容和附件。

步骤概述

  1. 引入依赖: 添加 Spring Boot Starter Mail 依赖项。
  2. 配置邮件发送: 配置 SMTP 服务器和邮件发送器。
  3. 发送简单邮件: 发送简单的文本邮件。
  4. 发送 HTML 邮件: 发送包含 HTML 内容的邮件。
  5. 发送带附件的邮件: 发送包含附件的邮件。
  6. 定时邮件发送: 使用 Spring 定时任务发送邮件。

1. 引入依赖

pom.xml 文件中添加 Spring Boot Starter Mail 依赖:

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

2. 配置邮件发送

application.propertiesapplication.yml 中配置 SMTP 服务器信息:

spring.mail.host=your_smtp_host
spring.mail.port=your_smtp_port
spring.mail.username=your_username
spring.mail.password=your_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

3. 发送简单邮件

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;@Service
public class EmailService {@Autowiredprivate JavaMailSender emailSender;public void sendSimpleMessage(String to, String subject, String text) {SimpleMailMessage message = new SimpleMailMessage();message.setTo(to);message.setSubject(subject);message.setText(text);emailSender.send(message);}
}

4. 发送 HTML 邮件

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;@Service
public class EmailService {@Autowiredprivate JavaMailSender emailSender;public void sendHtmlMessage(String to, String subject, String htmlBody) throws MessagingException {MimeMessage message = emailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setTo(to);helper.setSubject(subject);helper.setText(htmlBody, true);emailSender.send(message);}
}

5. 发送带附件的邮件

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;@Service
public class EmailService {@Autowiredprivate JavaMailSender emailSender;public void sendMessageWithAttachment(String to, String subject, String text, String pathToAttachment) throws MessagingException {MimeMessage message = emailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setTo(to);helper.setSubject(subject);helper.setText(text);FileSystemResource file = new FileSystemResource(new File(pathToAttachment));helper.addAttachment("Attachment", file);emailSender.send(message);}
}

6. 定时邮件发送

使用 Spring 的定时任务功能,在需要定时发送的方法上加上 @Scheduled 注解:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@Component
public class ScheduledEmail {private final EmailService emailService;public ScheduledEmail(EmailService emailService) {this.emailService = emailService;}@Scheduled(cron = "0 0 8 * * ?") // 每天早上8点发送邮件public void sendScheduledEmail() {// 发送邮件逻辑emailService.sendSimpleMessage("recipient@example.com", "Subject", "Content");}
}

以上代码提供了基本的邮件发送逻辑和定时任务配置。在实际应用中,请替换相关信息,例如邮件主题、内容、收件人地址以及附件路径等。

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

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

相关文章

Labview Vision 机器视觉使用,从下载程序安装应用,到实战找硬币并输出值

1.前言 大家好,今天我要和机器人一起配合来打算 做机器视觉 用Labview 和 Vision 联动实现机器的视觉 2.下载软件-软件的安装 我们除了基础款的labview软件 还要安装视觉四件套 1.Labview 编程平台&#xff08;我是 2023 q3&#xff09; 2. NI - IMAQdx &#xff08;驱动软…

为什么uboot/pmon会随机修改开发板的mac地址

U-Boot&#xff08;Universal Boot Loader&#xff09;在某些情况下可能会随机生成MAC地址&#xff0c;这主要是出于以下原因&#xff1a; 安全考虑&#xff1a; 为了增加设备的安全性&#xff0c;防止恶意用户通过MAC地址追踪或识别特定的设备&#xff0c;U-Boot可能会在每次…

Ubuntu 常用命令之 ifconfig 命令用法介绍

ifconfig 是一个用于配置和显示 Linux 内核中网络接口的系统管理命令。它用于配置&#xff0c;管理和查询 TCP/IP 网络接口参数。 ifconfig 命令的参数有很多&#xff0c;以下是一些常见的参数 up&#xff1a;激活指定的网络接口。down&#xff1a;关闭指定的网络接口。add&a…

Qnx wfd_be wfd_fe Android 通讯

在android 侧和 qnx 侧都指定mmid 使用habmm_socket_open 创建通讯channel 使用user_os_utils_send_recv完成消息的发送和接收 apps/qnx_ap/AMSS/multimedia/display/Hoya/wfd_be_qnx/src /* -----------------------------------------------------------------------------…

蓝桥杯常用库heapq

堆的常用方法 使用list表示一个堆 将无序List转换成最小堆;heapq.heapify(a) 最小堆a中添加元素x:heapq.heappush(a, x) 弹出并返回最小元素:heapq.heappop(a) 弹出并返回最小元素&#xff0c;同时添加元素x:heapq.heapreplace(a,x) import heapqa [11, 6, 9, 8, 7, 3] heapq.…

Redis字符串数据类型之INCR命令,通常用于统计网站访问量,文章访问量,实现分布式锁

前言 Redis的INCR命令用于将键的值增加1。如果键不存在&#xff0c;则会先将键的值设置为0&#xff0c;然后再执行INCR操作。INCR命令的作用是对计数器进行自增操作&#xff0c;可以用于实现多种场景&#xff0c;比如统计网站访问量、文章访问量、分布式锁等。 一、Redis字符…

JS中的selection事件与range

前言 本文简单总结下文本输入中的 Selection 与 Range 事件。 测试地址见: 在线效果预览 ::selection && Selection 自定义选取颜色 项目中一般有主题色的需求&#xff0c;这时候可以通过 css 中的::selection伪类可以自定义选中背景颜色 ::selection {background: yel…

【论文笔记】Distilling the Knowledge in a Neural Network

Abstract 几乎任何机器学习算法性能提升的一个非常简单的方法是在相同数据上训练多个不同的模型&#xff0c;然后对它们的预测结果进行平均。 不幸的是&#xff0c;使用整个模型集合进行预测繁琐&#xff0c;可能会因为计算成本过高而难以部署给大量用户&#xff0c;尤其是如果…

MyBatis的原始DAO开发!!!

引用&#xff1a;MyBatis的删除、修改、插入操作&#xff01;&#xff01;&#xff01;-CSDN博客的准备工作&#xff01;&#xff01;&#xff01;&#xff08;准备工作都一样只不过文件名称有所不同&#xff09; 1.利用原始DAO开发&#xff0c;查询所有的信息。 UserDao&#…

使用 Rsync 在 Linux 上实现高效文件同步和备份

前言 Rsync&#xff08;Remote Sync&#xff09;是一款在 Linux 系统中被广泛应用于文件备份和同步的工具&#xff0c;它提供了快速、可靠且灵活的文件同步方案。 Rsync 的优势 增量传输&#xff1a;Rsync 只传输文件的变更部分&#xff0c;大幅减少了数据传输的时间和网络带…

【数据库模拟题目集】选择题

数据库应用程序的编写是基于数据库三级模式中的&#xff08;外模式&#xff09; 对创建数据库模式一类的数据库对象的授权可由CREATE USER时实现。新创建的数据库用户有三种权限&#xff0c;CONNECT、RESOURCE和DBA。拥有RESOURCE权限的用户&#xff08;不能创建模式 &#xf…

H5嵌入小程序(web-view)、BMap百度地图组件、导航功能、返回web-view页

H5嵌入小程序&#xff08;web-view&#xff09;及导航功实现 1、H5页面中的地图展示2、H5传递数据到微信小程序&#xff0c;并调用wx.openLocation微信内置地图及导航功能的实现 1、H5页面中的地图展示 创建地图容器&#xff0c;添加导航按钮 <template><div><…

关于通信基站综合防雷方案介绍

为了获取更好的通信效果&#xff0c;通信基站在选址时通常地势要高于周围环境&#xff0c;气候条件恶劣&#xff0c;夏季通讯及机房设备及发射铁塔遭受雷击灾害的风险较高&#xff0c;而现代的电信设备对雷电又较为敏感&#xff0c;使得雷害问题日益凸显出来&#xff0c;如果防…

裂解汽油行业分析:到2027 年将达到 202.4 亿美元

裂解汽油&#xff0c;又称pygas&#xff0c;是石化工业中用石脑油或瓦斯油生产乙烯和丙烯的副产品。热解气是一种复杂的碳氢化合物混合物&#xff0c;主要由苯、甲苯和二甲苯等芳烃组成。热解汽油是生产苯乙烯、苯酚和合成橡胶等化学品的宝贵原料。 全球市场&#xff1a; 预计在…

延迟消息队列的几种实现方案,哪种更适合业务,要看具体情况分析

延迟消息队列的几种实现方案&#xff0c;延迟消息怎么实现&#xff0c;很多人可能一想到的是rabbitmq的死信队列来实现&#xff0c;但是一旦引入mq的话&#xff0c;就依赖这个中间件&#xff0c;另外维护成本&#xff0c;开发成本都很大&#xff0c;那有么有简单点的实现方式呢…

Linux安全之SELinux理解

安全增强式 Linux&#xff0c;即SELinux(Security-Enhanced Linux)是一个 Linux 内核的安全模块&#xff0c;其提供了访问控制安全策略机制&#xff0c;包括了强制访问控制(Mandatory Access Control&#xff0c;MAC)。SELinux 是一组内核修改和用户空间工具&#xff0c;已经被…

9ACL访问控制列表

为什么要有访问控制&#xff08;Access Control List&#xff09;&#xff1f; 因为我可能在局域网中提供了一些服务&#xff0c;我只希望合法的用户可以访问&#xff0c;其他非授权用户不能访问。 原理比较简单&#xff0c;通过对数据包里的信息做过滤&#xff0c;实现访问控…

houdini 神经网络

实现个神经网络的3D可视化&#xff0c;美爆了&#xff01;-腾讯云开发者社区-腾讯云 https://vimeo.com/stefsietz GitHub - julrog/nn_vis: A project for processing neural networks and rendering to gain insights on the architecture and parameters of a model throu…

unity2d 关闭全局重力

UNITY2D项目默认存在Y轴方向重力&#xff0c;创建俯视角2D场景时可通过以下配置关闭 Edit > Project Settings > Physics 2D > General Settings > Gravity 设置Y0

vue打包后直接本地访问index.html

以下方法可能有些项目并不生效 在vue.config.js 文件&#xff0c;没有的话就新建一个&#xff0c;并添加publicPath: ./ ’ module.exports {publicPath: ./ }router.js 把mode改成hash模式 const router new Router({mode: "hash",routes }); export default rout…