spring boot 发送邮件验证码

一、前置需求

1、准备邮箱

2、登录授权码

qq邮箱在-->设置-->账号POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

开启服务

二、发送邮件

1、简单邮件

包含邮件标题、邮件正文

2、引入mail启动器

xml 复制代码
        <dependency>
                <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

3、mail参数配置

application.yml

yml 复制代码
mail:
  username: User@qq.com				#填写邮箱地址
  password: 123456					#填写授权码
  host: smtp.qq.com					#发送邮件的host

4、API

JavaMailSender:发送邮件的客户端

send(mail)

SimpleMailMessage:分装简单的邮件的Bean

setSubject(标题)

setText(正文)

setTo(收件地址)

setFrom(发件地址)

csharp 复制代码
@Service
public class SendEmailCodeService {
    //发送邮件验证码
    public static void sendEmailCode(JavaMailSender mailSender, String email, String subject, String code) throws MailSendException {
        //TODO: 发送邮件验证码
        SimpleMailMessage message = new SimpleMailMessage(); //创建SimpleMailMessage对象
        message.setFrom("User@qq.com"); //设置发件人
        message.setSubject(subject); //设置邮件主题
        message.setText("您的验证码为:" + code); //设置邮件内容
        message.setTo(email); //设置收件人邮箱
        mailSender.send(message); //发送邮件
    }
}

我配置的是qq邮箱,发送邮件时报错:

经过查询:解决方法配置application.yml
发送邮件:530 Login fail. A secure connection is requiered(such as ssl)


发送成功:

三、复杂邮件

1、复杂邮件有更加丰富的内容,如:图片、链接、附件等

2、API

JavaMailSender:发送邮件的客户端

send(mail)

MimeMessage:封装复杂邮件的Bean

send.createMimeMessage()

MimeMessageHelper:设置复杂邮件的辅助工具

setSubject(标题)

setText(正文,escapeHtml)

setTo(收件地址)

setFrom(发件地址)

addAttachment(fileName,file)

相关推荐
程序员敲代码吗1 小时前
如何通过命令行启动COMSOL的参数化、批处理和集群扫描
java·c#·bash
晚霞的不甘1 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d
MX_93592 小时前
Spring的bean工厂后处理器和Bean后处理器
java·后端·spring
市场部需要一个软件开发岗位2 小时前
JAVA开发常见安全问题:纵向越权
java·数据库·安全
海奥华22 小时前
mysql索引
数据库·mysql
历程里程碑2 小时前
普通数组----合并区间
java·数据结构·python·算法·leetcode·职场和发展·tornado
程序员泠零澪回家种桔子2 小时前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
CodeCaptain2 小时前
nacos-2.3.2-OEM与nacos3.1.x的差异分析
java·经验分享·nacos·springcloud
2601_949593653 小时前
深入解析CANN-acl应用层接口:构建高效的AI应用开发框架
数据库·人工智能
javachen__3 小时前
mysql新老项目版本选择
数据库·mysql