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("邮件发送失败");
        }
    }
相关推荐
码农小卡拉3 分钟前
深入解析Spring Boot文件加载顺序与加载方式
java·数据库·spring boot
向上的车轮10 分钟前
为什么.NET(C#)转 Java 开发时常常在“吐槽”Java:checked exception
java·c#·.net
Dragon Wu12 分钟前
Spring Security Oauth2.1 授权码模式实现前后端分离的方案
java·spring boot·后端·spring cloud·springboot·springcloud
跳动的梦想家h18 分钟前
环境配置 + AI 提效双管齐下
java·vue.js·spring
坚持就完事了19 分钟前
Java中的集合
java·开发语言
wjhx28 分钟前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
YCY^v^33 分钟前
JeecgBoot 项目运行指南
java·学习
人间打气筒(Ada)44 分钟前
jenkins基于Pipeline发布项目
java·pipeline·jenkins·流水线·ci·cd·cicd
爬山算法1 小时前
Hibernate(88)如何在负载测试中使用Hibernate?
java·后端·hibernate
自不量力的A同学1 小时前
Solon AI v3.9 正式发布:全能 Skill 爆发
java·网络·人工智能