JavaMail邮件发送服务

记录一次使用基于SpringBoot来设置发送邮件的服务

导入依赖

复制代码
<!--邮件发送-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>${springboot.version}</version>
</dependency>

开启自己邮箱的SMTP/IMAP服务,获取授权码,写入配置文件

java 复制代码
#发送邮件配置相关
# 配置邮件服务器的地址 smtp.qq.com
spring.mail.host=smtp.qq.com
# 配置邮件服务器的端口(465或587)
spring.mail.port=465
# 配置用户的账号
spring.mail.username=xxxxx@qq.com
# 配置用户的密码
spring.mail.password=填入授权码
# 配置默认编码
spring.mail.default-encoding=UTF-8
# SSL 连接配置
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
# 开启 debug,这样方便开发者查看邮件发送日志
spring.mail.properties.mail.debug=true
#邮件配置结束

一次简单的邮件发送

Service层:注入JavaMailSender对象,利用MimeMessageHelper对象来设置要发送的邮件,最后调用JavaMailSender的send()方法进行发送

java 复制代码
    private void sendEmailCode(String toEmail, String code) {
        try {
            MimeMessage message = javaMailSender.createMimeMessage();
            //MimeMessageHelper用来简化对MineMessage的设置
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            //邮件发件人
            helper.setFrom(appConfig.getSendUserName());
            //邮件收件人 1或多个
            helper.setTo(toEmail);

            SysSettingsDto sysSettingsDto = redisComponent.getSysSettingsDto();

            //邮件主题
            helper.setSubject(sysSettingsDto.getRegisterEmailTitle());
            //邮件内容
            helper.setText(String.format(sysSettingsDto.getRegisterEmailContent(), code));
            //邮件发送时间
            helper.setSentDate(new Date());
            javaMailSender.send(message);
        } catch (Exception e) {
            logger.error("邮件发送失败", e);
            throw new BusinessException("邮件发送失败");
        }
    }
相关推荐
kk哥88994 小时前
如何快速掌握JavaSE的核心语法?
java
我是一只小青蛙8884 小时前
AVL树:平衡二叉搜索树原理与C++实战
java·jvm·面试
浩瀚地学5 小时前
【Java】JDK8的一些新特性
java·开发语言·经验分享·笔记·学习
XXOOXRT6 小时前
基于SpringBoot的加法计算器
java·spring boot·后端·html5
阿崽meitoufa6 小时前
JVM虚拟机:垃圾收集器和判断对象是否存活的算法
java·jvm·算法
我是苏苏6 小时前
C#高级:使用ConcurrentQueue做一个简易进程内通信的消息队列
java·windows·c#
heartbeat..8 小时前
数据库基础知识体系:概念、约束、范式与国产产品
java·数据库·学习笔记·国产数据库
PXM的算法星球8 小时前
【操作系统】哲学家就餐问题实现详解
java
2301_815357708 小时前
Java项目架构从单体架构到微服务架构的发展演变
java·微服务·架构