springboot实现邮箱发送(激活码)功能

第一步:现在邮箱里面开启smtp服务

这里用163邮箱举例,配置一下授权密码,这个要提前记住

第二步:引入依赖

<?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>
    <groupId>com.example</groupId>
    <artifactId>malisend</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>malisend</name>
    <description>malisend</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.example.malisend.MalisendApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

第三步:写配置文件

spring:
  mail:
    host: smtp.163.com # 网站发送邮件邮箱服务 host
    port: 465
    username:  # 开启那个服务的邮箱
    password:  # 开启服务的那个认证码
    properties:
      mail:
        smtp:
          auth: true
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
          starttls:
            enable: true

第四步:写代码

Order实体类:

package com.example.malisend.demos;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Order {
    private int oid;
    private String oname;
    private float price;
}
复制代码
OrderManager接口
package com.example.malisend.demos;

public interface OrderManager {

    void placeOrder(Order order);

}
复制代码
SimpleOrderManager类
package com.example.malisend.demos;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMessage;
import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.stereotype.Service;

@Service
public class SimpleOrderManager implements OrderManager {

    private JavaMailSender mailSender;

    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void placeOrder(final Order order) {
        // Do the business calculations...
        // Call the collaborators to persist the order...

        MimeMessagePreparator preparator = new MimeMessagePreparator() {
            public void prepare(MimeMessage mimeMessage) throws Exception {
                mimeMessage.setRecipient(Message.RecipientType.TO,
                        new InternetAddress("要发送给那个人的邮箱"));
                mimeMessage.setFrom(new InternetAddress("开启服务的那个邮箱"));
                mimeMessage.setText("Dear " + order.getOname() + " " +
                        order.getPrice() + ", thanks for your order. " +
                        "Your order number is "  + ".");
            }
        };

        try {
            this.mailSender.send(preparator);
        }
        catch (MailException ex) {
            // simply log it and go on...
            System.err.println(ex.getMessage());
        }
    }

}
复制代码
OrderController类
package com.example.malisend.demos;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OrderController {
    @Autowired
    SimpleOrderManager orderManager;

    @Autowired
    JavaMailSenderImpl mailSender;

    Order order=new Order(1,"cyl",2.8f);
    @GetMapping("/sendMail")
    public void sendMail(){

        orderManager.setMailSender(mailSender);
        orderManager.placeOrder(order);
    }
}

访问:http://localhost:8080/sendMail

结果:

相关推荐
飞翔的佩奇5 分钟前
Java项目: 基于SpringBoot+mybatis+maven+mysql实现的疾病防控综合管理系统(含源码+数据库+毕业论文)
java·数据库·spring boot·mysql·spring·毕业设计·疾病防控
栗豆包1 小时前
w187社区养老服务平台的设计与实现
java·spring boot·后端·spring·tomcat
violin-wang1 小时前
如何在Intellij IDEA中识别一个文件夹下的多个Maven module?
java·spring boot·spring·maven·intellij-idea
xidianjiapei0013 小时前
如何在5步内使用 Spring AI 和 OpenAI 的 DALL-E 3 生成图像
java·人工智能·后端·spring·语言模型·openai
安清h3 小时前
【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户登录
java·后端·mysql·spring
生产队队长4 小时前
SpringSecurity:There is no PasswordEncoder mapped for the id “null“
java·spring
稚辉君.MCA_P8_Java7 小时前
SpringAI 人工智能
大数据·linux·人工智能·分布式·spring
心之语歌7 小时前
Sentinel 断路器在Spring Cloud使用
spring·spring cloud·sentinel
Java学长-kirito7 小时前
springboot/ssm教学资源管理系统web在线课程教学视频Java代码编写
java·spring boot·spring
北珣.8 小时前
安装RabbitMQ
java·spring·rabbitmq