尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

实现邮件发送

实现邮件发送
📅 发布时间:2026/6/19 18:21:10

实现发送邮件的功能,可以在判定用户异地登录后发送邮件提醒或者使用邮件发送验证码的多种使用场景。

引入邮件依赖

<!--邮件发送依赖包-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--freemarker制作Html邮件模板依赖包-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

主要是引入了spring-boot-starter-mail和spring-boot-starter-freemarker的相关jar包。

其中,spring-boot-starter-mail是为了提供发生邮件的功能。

spring-boot-starter-freemarker是为了提供处理模板文件的功能。

配置邮箱参数

需要在application.yml文件中配置邮箱发送的相关参数(以QQ为例)

QQ邮箱授权码获取:https://service.mail.qq.com/detail/0/75

spring:mail:protocol: smtphost: smtp.qq.comport: 465username: xxxx@qq.com #你的邮箱password: xxxxxxxx  #你的授权码properties:mail:smtp:auth: truessl:enable: truesocketFactory:class: com.mysql.cj.jdbc.Socks5SocketFactoryfallback: true

增加发邮件类

创建IEmailService接口,为了对发邮件的功能指定一个规范,后面系统如果对接了其他的发邮件功能,也可以使用这套规范。

package com.kailong.service.email;import javax.mail.MessagingException;
import java.util.List;public interface IEmailService {/*** 发送简单文本邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param content      内容*/void sendEmail(String receiveEmail, String subject, String content);/*** 发送HTML格式的邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param htmlContent  内容* @throws MessagingException*/void sendHtmlEmail(String receiveEmail, String subject, String htmlContent) throws MessagingException;/*** 发送包含附件的邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param emailContent 内容* @param filePathList 附件地址* @throws MessagingException 异常*/void sendAttachmentsEmail(String receiveEmail, String subject, String emailContent, List<String> filePathList) throws MessagingException;
}

这个接口中定义了三个方法:

  1. 发生简单邮件。
  2. 发生html格式邮件。
  3. 发生带附件的邮件。

实现接口:

@Service
public class EmailServiceImpl implements IEmailService {@Autowiredprivate JavaMailSender javaMailSender;@Value("${spring.mail.username}")private String fromEmail;/*** 发送简单文本邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param content      内容*/@Overridepublic void sendEmail(String receiveEmail, String subject, String content) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(fromEmail);message.setTo(receiveEmail);message.setSubject(subject);message.setText(content);javaMailSender.send(message);}/*** 发送HTML格式的邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param htmlContent  内容* @throws MessagingException*/@Overridepublic void sendHtmlEmail(String receiveEmail, String subject, String htmlContent) throws MessagingException {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(fromEmail);helper.setTo(receiveEmail);helper.setSubject(subject);helper.setText(htmlContent, true);javaMailSender.send(message);}/*** 发送包含附件的邮件** @param receiveEmail 收件人邮箱* @param subject      主题* @param emailContent 内容* @param filePathList 附件地址* @throws MessagingException 异常*/@Overridepublic void sendAttachmentsEmail(String receiveEmail, String subject, String emailContent, List<String> filePathList) throws MessagingException {MimeMessage message = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(fromEmail);helper.setTo(receiveEmail);helper.setSubject(subject);helper.setText(emailContent, true);//添加附件资源for (String item : filePathList) {FileSystemResource file = new FileSystemResource(new File(item));String fileName = item.substring(item.lastIndexOf(File.separator));helper.addAttachment(fileName, file);}//发送邮件javaMailSender.send(message);}
}

创建测试接口:

@RestController
@RequestMapping("/job")
public class TestController {private static final String SUCCESS = "success";@Autowiredprivate EmailServiceImpl emailService;@GetMapping("/test")public String test() {return SUCCESS;}@GetMapping("/sendEmail")public String sendEmail() {emailService.sendEmail("12lisu@163.com", "test", "test123");return SUCCESS;}
}

效果测试:

  • 获取用户ip所在城市
  • 记录用户业务请求日志
欢迎关注我的公众号,共同学习

相关新闻

  • LuatOS赋能Air780EPM:FTP通信开发教程正式上线!
  • DM40万用表为何全网爆火?!它有哪些与众不同?DM40万用表比肩千元级表,让您轻松实现专业级测量自由!
  • 【论术】t-design tree组件判断点击了角标还是label

最新新闻

  • Kinetis KL27 ADC与通信接口电气特性深度解析与实战设计
  • 如何3步完成B站视频转文字:免费工具bili2text完全指南
  • 2026年叠螺污泥脱水设备厂家推荐:养殖场污粪处理/工业污泥脱水/废水回收/小型污泥处理设备供应商盘点 - 海棠依旧大
  • 2026芜湖漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • Mission Planner:5个高效实用技巧让你快速掌握专业无人机飞行控制
  • 预装windows11系统的西门子IPC型号:PX-39A PRO

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号