springboot-简单的邮箱验证

在邮箱设置–>账户下开启POP3/SMTP服务

1.导入mail依赖

<!--        mail邮件依赖-->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>

2.使用工具类

package com.iteam.utils;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * @title: EmailUtil
 * @Author: NightRain
 * @Date: 2022/5/31 16:41
 * @Version 1.0
 * @Description:
 */
public class EmailUtil {
    // 发送人邮箱服务器
    public static String smtp_host = "smtp.qq.com";
    // 发送人qq邮箱
    public static String username = "发送人的邮箱地址";
    // 授权码(登录邮箱-->设置-->邮箱安全设置-->客户端授权密码),这里不是邮箱的密码,切记!
    public static String password = "授权码";
    // 发送人qq邮箱
    public static String from = "****";

    public static void sendMail(String to, String subject, String text) throws Exception {
        // 1 准备发送邮件需要的参数
        Properties props = new Properties();
        // 设置主机地址 smtp.qq.com smtp.126.com smtp.163.com
        props.put("mail.smtp.host", smtp_host);
        // 是否打开验证:只能设置true,必须打开
        props.put("mail.smtp.auth", true);

        // 2 连接邮件服务器
        Session session = Session.getDefaultInstance(props);
        // 3 创建邮件信息
        MimeMessage message = new MimeMessage(session);

        // 4 设置发送者
        InternetAddress fromAddress = new InternetAddress(from);
        message.setFrom(fromAddress);
        // 5 设置接收者
        InternetAddress toAddress = new InternetAddress(to);
        // to:直接接收者 cc:抄送 bcc暗送
        message.setRecipient(Message.RecipientType.TO, toAddress);
        // 6 设置主题
        message.setSubject(subject);
        // 7 设置正文
        message.setText(text);

        // 设置HTML方式发送
        message.setContent(text, "text/html;charset=utf-8");

        // 8 发送:坐火箭
        Transport transport = session.getTransport("smtp");
        // 参数不能少,表示的是发送协议
        // 登录邮箱,此处的密码是授权码
        transport.connect(username, password);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }
}

3.直接在Controller层使用

            StringBuilder builder = new StringBuilder();
            int num;
            for (int i = 0; i < 6; i++) {
                num =(int)(Math.random()*10);
                builder.append(String.valueOf(num));
            }
            //随机生成的六位数字验证码
            String snum = builder.toString();
            //通过用户填入的邮箱,向其发送邮件
            String uEmail = users.getUEmail();
            EmailUtil.sendMail(uEmail,"验证信息","您的验证码为:"+snum);

4.测试

在这里插入图片描述

接收者

在这里插入图片描述

### 配置 Spring Boot 使用 QQ 邮箱 SMTP 发送邮件 #### 1. YAML 文件配置 为了使应用程序能够通过 QQ 的 SMTP 服务器发送电子邮件,在 `application.yml` 中应包含如下设置: ```yaml spring: mail: host: smtp.qq.com # QQ邮箱的SMTP主机地址 username: xxx@qq.com # 发件人的QQ邮箱账号 password: xxx # SMTP授权码,而非登录密码[^2] port: 587 # 端口可以是465或587, 这里选择了更常用的587端口 default-encoding: UTF-8 # 设置默认字符编码为UTF-8以支持中文 properties: mail.smtp.auth: true # 启用身份验证 mail.smtp.starttls.enable: true # 开启STARTTLS加密连接 mail.smtp.timeout: 5000 # 超时时间设为5秒 mail.smtp.connection-timeout: 5000 mail.smtp.write-timeout: 5000 mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory # SSL/TLS套接字工厂类名 ``` 上述配置项中特别需要注意的是 `password` 字段应当填入由 QQ 提供给用户的用于第三方应用访问的安全授权码而不是常规意义上的账户登陆密码。 #### 2. Java 代码实现 接下来展示一段简单Java程序片段来说明怎样利用已有的Spring框架组件向指定接收者发送一封纯文本形式的基础测试邮件: ```java 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 EmailService { @Autowired private JavaMailSender javaMailSender; public void sendSimpleEmail(String toEmail, String subject, String body){ SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("xxx@qq.com"); // 发件人邮箱 message.setTo(toEmail); // 收件人邮箱列表 message.setText(body); // 邮件正文内容 message.setSubject(subject); // 主题 try { this.javaMailSender.send(message); System.out.println("邮件成功发送"); } catch (Exception e) { System.err.println("邮件发送失败:" + e.getMessage()); } } } ``` 这段服务层逻辑定义了一个名为 `sendSimpleEmail()` 方法接受三个参数——目标电子信箱、主题以及消息体,并调用了来自依赖注入容器内的 `JavaMailSender` 实现对象的方法完成实际的消息投递操作。如果一切正常,则会在控制台打印一条确认信息;反之则会记录下异常详情以便排查问题所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值