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

【java深入学习第7章】用 Spring Boot 和 Java Mail 轻松实现邮件发送功能

引言

在现代的企业应用中,邮件发送是一个非常常见的功能。无论是用户注册后的验证邮件,还是系统通知邮件,邮件服务都扮演着重要的角色。本文将介绍如何在Spring Boot项目中整合Java Mail,实现发送邮件的功能。

一、准备工作

在开始之前,我们需要准备以下内容:

  • 一个Spring Boot项目
  • 一个可用的SMTP邮件服务器(如Gmail、QQ邮箱等)

二、添加依赖

首先,在pom.xml中添加Spring Boot Starter Mail依赖:

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

三、配置邮件服务器

application.propertiesapplication.yml中配置邮件服务器信息。以下是使用Gmail SMTP服务器的示例配置:

application.properties

spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=your-email@gmail.com
spring.mail.password=your-email-password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

application.yml

spring:mail:host: smtp.gmail.comport: 587username: your-email@gmail.compassword: your-email-passwordproperties:mail:smtp:auth: truestarttls:enable: true

四、编写邮件发送服务

创建一个MailService类,用于封装邮件发送的逻辑:

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 MailService {@Autowiredprivate JavaMailSender mailSender;public void sendSimpleMail(String to, String subject, String content) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom("your-email@gmail.com");message.setTo(to);message.setSubject(subject);message.setText(content);mailSender.send(message);}
}

五、编写控制器

创建一个控制器MailController,提供一个发送邮件的接口:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MailController {@Autowiredprivate MailService mailService;@GetMapping("/sendMail")public String sendMail(@RequestParam String to, @RequestParam String subject, @RequestParam String content) {mailService.sendSimpleMail(to, subject, content);return "Mail sent successfully";}
}

六、测试邮件发送功能

启动Spring Boot应用,访问以下URL测试邮件发送功能:

http://localhost:8080/sendMail?to=recipient-email@gmail.com&subject=Test&content=This is a test email.

如果配置正确并且邮件服务器可用,你应该会收到一封测试邮件。

七、发送HTML邮件

除了发送简单文本邮件,Java Mail还支持发送HTML格式的邮件。我们可以在MailService中添加一个方法来发送HTML邮件:

import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;public void sendHtmlMail(String to, String subject, String content) throws MessagingException {MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom("your-email@gmail.com");helper.setTo(to);helper.setSubject(subject);helper.setText(content, true);mailSender.send(message);
}

八、总结

通过本文的介绍,我们了解了如何在Spring Boot项目中整合Java Mail,实现发送邮件的功能。无论是简单的文本邮件,还是复杂的HTML邮件,Java Mail都能轻松应对。希望本文对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言。

百万大学生都在用的AI写论文工具,篇篇无重复👉:AI写论文

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 电脑远程开关机
  • 【找不到视图问题解决】@RestController 与 @Controller注解的使用区别
  • 大数据hive表和iceberg表格式
  • 【乐吾乐2D可视化组态编辑器】消息
  • 论文翻译:通过云计算对联网多智能体系统进行预测控制
  • notes for datawhale 2th summer camp NLP task1
  • JSqlParser 解析 sql
  • Linux介绍以及常用命令
  • html+js+css做的扫雷
  • 使用mybatis的statementHander拦截器监控表和字段并发送钉钉消息
  • Python面经
  • FlinkErr:org/apache/hadoop/hive/ql/parse/SemanticException
  • .Net Core 微服务之Consul(二)-集群搭建
  • Vue 接口用FormData() 提交数据
  • 如何使用 GPT?
  • Apache Pulsar 2.1 重磅发布
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • es6要点
  • Git学习与使用心得(1)—— 初始化
  • Js基础——数据类型之Null和Undefined
  • oschina
  • Shell编程
  • Spring-boot 启动时碰到的错误
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 深度学习入门:10门免费线上课程推荐
  • 使用权重正则化较少模型过拟合
  • 数据仓库的几种建模方法
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 学习ES6 变量的解构赋值
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 函数计算新功能-----支持C#函数
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 我们雇佣了一只大猴子...
  • ​学习笔记——动态路由——IS-IS中间系统到中间系统(报文/TLV)​
  • # Java NIO(一)FileChannel
  • #android不同版本废弃api,新api。
  • #includecmath
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (Java)【深基9.例1】选举学生会
  • (十八)SpringBoot之发送QQ邮件
  • (一)80c52学习之旅-起始篇
  • (转)德国人的记事本
  • (转载)Linux 多线程条件变量同步
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • *2 echo、printf、mkdir命令的应用
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core中Emit的使用
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .Net 代码性能 - (1)
  • .net 反编译_.net反编译的相关问题
  • .NET 反射 Reflect
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .Net的DataSet直接与SQL2005交互
  • @component注解的分类
  • @Resource和@Autowired的区别