基于Springboot邮件发送实现

基于Springboot邮件发送实现

1、创建springboot项目,并引入相关依赖依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.greatmap</groupId>
    <artifactId>mail</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mail</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2、获取QQ邮箱授权码

在这里插入图片描述
在这里插入图片描述
找到SMTP服务,并开启SMTP服务
在这里插入图片描述
QQ 邮箱会生成一个授权码,在代码里连接邮箱使用这个授权码而不是原始的邮箱密码,这样可以避免使用明文密码。
在这里插入图片描述

3、配置application.yml配置文件

spring:
  mail:
    username: #自己的邮箱帐号
    password: #生成的授权码,代替明文的QQ密码
    host: smtp.qq.com

4、简单邮件发送

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Random;

@SpringBootTest
class MailApplicationTests {
    
    

	//需要注入JavaMailSenderImpl
    @Autowired
    JavaMailSenderImpl javaMailSender;

    @Test
    void contextLoads() {
    
    
		//创建SimpleMailMessage对象
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setFrom("填写发送方的邮箱地址");
        mailMessage.setTo("填写接收方的邮箱地址");
        mailMessage.setSubject("学习邮件发送"); //邮件的标题
        mailMessage.setText("准备作为邮件验证码使用!!!"); //邮件内容

        javaMailSender.send(mailMessage); //发送

    }

}

5、复杂邮件发送

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Random;

@SpringBootTest
class MailApplicationTests {
    
    

	//注入JavaMailSenderImpl 
    @Autowired
    JavaMailSenderImpl javaMailSender;

    @Test
    void contextLoads2() {
    
    
    	//创建MimeMessage 对象
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        //创建MimeMessageHelper 对象
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);

        String name = "Harris";
        String code = "123456";

        try {
    
    
            helper.setFrom("填写发送方的邮箱地址");
            helper.setTo("填写接收方的邮箱地址");
            helper.setSubject("复杂邮件学习"); //邮件标题
            helper.setText("<p>你好," + "<span style='color:blue;'>" + name + "</span>" + "</p>" +
                    "<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您的验证码为" + "<span style='color:blue;'>" +code + "</span>" + "由于该验证码涉及账户安全,请不要随意告诉他人!</p>", true); //邮件内容,如果为true则表示开启html解析
        } catch (MessagingException e) {
    
    
            e.printStackTrace();
        }

        javaMailSender.send(mimeMessage); //发送

    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44412272/article/details/114575977