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 原创发布
转载请点名出处:全栈之旅 > spring boot 发送邮件
本文地址:https://www.kpromise.top/spring-boot-send-email/

发表评论

电子邮件地址不会被公开。 必填项已用*标注