springboot实现qq邮箱发送邮件或者验证码

首先我先去qq邮箱或者网易邮箱开通POP3/IMAP/SMTP/Exchange/CardDAV 服务


它在左上角的设置——账户——往下滑就可以找到——然后点击开通


springboot实现qq邮箱发送邮件或者验证码_第1张图片

 


 开通后就会得到一串授权码。如下图


springboot实现qq邮箱发送邮件或者验证码_第2张图片

 


 接下来直接编写代码


首先我没导入依赖




org.springframework.boot
spring-boot-starter-mail
3.1.0


 整体项目结构如下


springboot实现qq邮箱发送邮件或者验证码_第3张图片

 


 controller层


@Component
public class EmailController {


    @Autowired
    private JavaMailSenderImpl mailSender;

    public void send(EmailInfo emailInfo) {
        try {
            SimpleMailMessage mailMessage = new SimpleMailMessage();
            //主题
            mailMessage.setSubject("邮件主题");
            //生成随机数
            String code = randomCode();
            //内容
            mailMessage.setText("邮件内容" );
            System.out.println("您收到的验证码是:" + code);
            //发给谁
            mailMessage.setTo(emailInfo.getToEmail());
            //你自己的邮箱(可以去配置文件中获取)  也可以直接写上去
            mailMessage.setFrom("发邮件的人");
            //发送
            mailSender.send(mailMessage);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 随机生成6位数的虚拟银行卡
     * @return String code
     */
    public String randomCode(){
        StringBuilder str = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < 6; i++) {
            str.append(random.nextInt(10));
        }
        return str.toString();
    }






}


 pojo层(就是一个实体类)


package com.chd.pojo;

/**
 * @Author 陈厚德
 * @Version 2.2
 */
public class EmailInfo {


    private String id;

    /**
     * 内容
     */
    private String title;

    /**
     * 邮箱收件地址
     */
    private String toEmail;


    public EmailInfo() {
    }

    public EmailInfo(String id, String title, String toEmail) {
        this.id = id;
        this.title = title;
        this.toEmail = toEmail;
    }

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取
     * @return title
     */
    public String getTitle() {
        return title;
    }

    /**
     * 设置
     * @param title
     */
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * 获取
     * @return toEmail
     */
    public String getToEmail() {
        return toEmail;
    }

    /**
     * 设置
     * @param toEmail
     */
    public void setToEmail(String toEmail) {
        this.toEmail = toEmail;
    }

    public String toString() {
        return "EmailInfo{id = " + id + ", title = " + title + ", toEmail = " + toEmail + "}";
    }
}


 propertie配置类


server.port=8725
spring.mail.host = smtp.qq.com
spring.mail.username = 发送者
spring.mail.password = 你的密码
spring.mail.properties.mail.smtp.ssl.enable=ture
spring.mail.default-encoding=UTF-8

最后是测试类


package com.chd;

import com.chd.controller.EmailController;
import com.chd.pojo.EmailInfo;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

@SpringBootTest
class EmailChdApplicationTests {


    @Autowired
    EmailController controller;



//    测试邮箱验证
    @Test
    void contextLoads() {

        System.out.println("测试邮箱验证");


        EmailInfo emailInfo=new EmailInfo("25","邮箱测试","被测试的邮箱号");

        System.out.println("测试者是"+emailInfo.getToEmail());

        controller.send(emailInfo);
    }






}

到这里,测试不报错就成功了,希望嫩帮助到各位小伙伴

你可能感兴趣的:(spring,boot,java,spring)