java

spring boot 发送邮件

我们在开发中总会遇到发送邮件或者发送短信验证码的事,本文讲述如果在 spring boot 项目里发送邮件。为接下来用户通过邮箱注册然后输入验证码激活做准备。通过本文,你能了解到,在 spring boot 项目里如何优雅的发送邮件,并与现有的邮箱服务器,比如163集成。

首先,我们添加依赖:

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

然后,我们新建 email package,之后在 email package 包下面新建 EmailToos.java,源码如下:

import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import top.kpromise.user.crash.CrashHandler;

import javax.mail.internet.MimeMessage;

@Component
public class EmailTools {

    private final JavaMailSender javaMailSender;

    public EmailTools(JavaMailSender javaMailSender) {
        this.javaMailSender = javaMailSender;
    }

    public void sendActiveUserVerifyCode(String email, String verifyCode) {
        MimeMessage message;
        try {
            message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, false);
            helper.setFrom("ijustyce@163.com");
            helper.setTo(email);
            helper.setSubject("您的激活验证码");

            helper.setText("您的验证码是: " + verifyCode + " 验证码5分钟内有效", true);
            javaMailSender.send(message);
        } catch (Exception e) {
            e.printStackTrace();
            CrashHandler.reportException(e);
        }
    }
}

代码一如既往的简单、简洁啊,就一个方法 sendActiveUserVerifyCode,至于 MimeMessage 相关的 api 本文不做讨论。只需要注意将这里的 ijustyce@163.com 改为 你自己的邮箱地址,application.properties 里配置的那个即可。

最后在 application.properties 里新增

# 邮件发送配置
spring.mail.host=smtp.163.com
spring.mail.username=ijustyce@163.com
spring.mail.password=xxx
spring.mail.port=465
spring.mail.protocol=smtp
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.ssl.enable=true

这里,记得将 password 改为你自己的密码或者授权码,ijustyce@163.com 改为你自己的邮箱地址。

最后,如何使用呢?一如既往的简单啊,比如如下:

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;
import top.kpromise.user.email.EmailTools;

@Component
public class KafkaConsumer {

    private final EmailTools emailTools;

    public KafkaConsumer(EmailTools emailTools) {
        this.emailTools = emailTools;
    }

    @KafkaListener(topics = "createUserByEmail")
    public void createUserByEmail(String email) {
        emailTools.sendActiveUserVerifyCode(email, "123456");
    }
}

至此,spring boot 项目里发送邮件 没任何问题了。如果你遇到问题,欢迎留言讨论。

full-stack-trip

Share
Published by
full-stack-trip
Tags: spring-boot

Recent Posts

Android 自定义 View 入门

说来惭愧,工作数年,连基本的自…

4 年 ago

retrofit 同时支持 xml 和 json

retrofit 解析 jso…

4 年 ago

mysql - 存储过程 从入门到放弃

最近有个报表的需求,于是乎用了…

4 年 ago

奶嘴战略 - 你不得不知道的扎心真相(一)

一句:英雄枯骨无人问,戏子家事…

4 年 ago

acme.sh 的简单使用

acme.sh 是纯 shel…

4 年 ago

wrk -更现代化的http压测工具

wrk 是一款更现代化的 ht…

4 年 ago