基于SpringBoot的邮件验证「建议收藏」

基于SpringBoot的邮件验证「建议收藏」在实际开发中,可能会遇到用户注册之后需要邮件验证这样的功能,尤其是在参与到一个新项目的时候,基本都会遇到,这次分享专门抽出一节来说说在工作中邮件验证的开发过程,并附加详细代码。值得注意的是,代码是基于Java编写的,其他语言原理大同小异。注:如果对邮件发送还不熟悉的小伙伴可以查看《自动发送邮件实现》,里面关于邮箱设置等信息都有详细说明。第一步:依赖引入这里由于我使用到了thyme…

大家好,欢迎来到IT知识分享网。

 

在实际开发中,可能会遇到用户注册之后需要邮件验证这样的功能,尤其是在参与到一个新项目的时候,基本都会遇到,这次分享专门抽出一节来说说在工作中邮件验证的开发过程,并附加详细代码。值得注意的是,代码是基于Java编写的,其他语言原理大同小异。

注:如果对邮件发送还不熟悉的小伙伴可以查看《自动发送邮件实现》,里面关于邮箱设置等信息都有详细说明。

第一步:依赖引入

这里由于我使用到了thymeleaf作为模板,所以也需要使用到thymeleaf依赖;另一个就是mail依赖,具体如下:


<!-- 邮件发送依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

<!-- 邮件发送模板需要使用thymeleaf依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

第二步:代码编写

1. 邮件实体定义

关于邮件实体定义如下:

package com.concurrency.study.mail;

import lombok.Data;
import lombok.ToString;

/**
 * <p>Title: Mail</p >
 * <p>Description: 邮件实体定义</p >
 * <p>Company: http://www.novabeyond.com</p >
 * <p>Project: concurrency</p >
 *
 * @author: WEIQI
 * @Date: 2019-11-15 14:47
 * @Version: 1.0
 */
@Data
@ToString
public class Mail {
    /**
     * 邮件发送方
     */
    private String from;
    /**
     * 邮件接收方
     */
    private String to;
    /**
     * 邮件主题
     */
    private String subject;
    /**
     * 邮件内容
     */
    private String mailContent;
}

邮件实体具体内容可根据项目需求自己定义,

2. 接口定义

这里采用接口定义邮件发送接口,如果还有其他简单邮件发送,在该接口自行定义即可,代码如下:

package com.concurrency.study.mail.service;

import com.concurrency.study.mail.Mail;

import javax.validation.constraints.NotNull;

/**
 * <p>Title: MailService</p >
 * <p>Description: 邮件发送接口定义</p >
 * <p>Company: http://www.novabeyond.com</p >
 * <p>Project: concurrency</p >
 *
 * @author: WEIQI
 * @Date: 2019-11-15 14:45
 * @Version: 1.0
 */
public interface MailService {

    /**
     * @description: 发送激活邮件验证
     * @author: WEIQI
     * @date: 2019-11-15 14:53
     * @param mail 发送邮件需要的基本参数,具体参照Mail定义
     * @return: int
     */
    void sendActiveMail(@NotNull Mail mail);
}

3. 接口实现

邮件激活验证代码编写,如下:

package com.concurrency.study.mail.service.impl;

import com.concurrency.study.mail.Mail;
import com.concurrency.study.mail.service.MailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.validation.constraints.NotNull;

/**
 * <p>Title: MailServiceImpl</p >
 * <p>Description: 邮件接口实现</p >
 * <p>Company: http://www.novabeyond.com</p >
 * <p>Project: concurrency</p >
 *
 * @author: WEIQI
 * @Date: 2019-11-15 14:52
 * @Version: 1.0
 */
@Slf4j
@Component
public class MailServiceImpl implements MailService {

    @Autowired
    private JavaMailSender javaMailSender;
    /**
     * @param mail 发送邮件需要的基本参数,具体参照Mail定义
     * @description: 发送激活邮件验证
     * @author: WEIQI
     * @date: 2019-11-15 14:53
     * @return: int
     */
    @Override
    public void sendActiveMail(@NotNull Mail mail) {
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(mail.getFrom());
            helper.setTo(mail.getTo());
            helper.setSubject(mail.getSubject());
            helper.setText(mail.getMailContent(), true);
            javaMailSender.send(message);
            log.info("激活验证邮件发送成功...");
        } catch (MessagingException e) {
            log.error("验证邮件发送失败...", e);
        }
    }
}

具体代码就不做解释了,比较简单,可以自己复制粘贴代码运行查看效果。

4. 模板文件编写

在resources目录下创建templates文件夹,编写激活邮件的HTML文件模板,如下图所示:

基于SpringBoot的邮件验证「建议收藏」

 具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>account active</title>
</head>
<body>
<p>您好, 请点击下面链接激活您的账号!</p><br/>
<a href="#" th:href="@{ http://www.baidu.com/{userId}(userId=${userId}) }">激活账号</a>
</body>
</body>
</html>

5. 单元测试

创建单元测试类,对邮件发送方法进行测试,如下:

package com.concurrency.study.mail;

import com.concurrency.study.mail.service.MailService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import java.util.UUID;

/**
 * <p>Title: MailTest</p >
 * <p>Description: 邮件发送测试类</p >
 * <p>Company: http://www.novabeyond.com</p >
 * <p>Project: concurrency</p >
 *
 * @author: WEIQI
 * @Date: 2019-11-15 15:07
 * @Version: 1.0
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class MailTest {

    @Autowired
    private MailService mailService;

    @Autowired
    private TemplateEngine templateEngine;

    @Test
    public void sendActiveMailTest() {
        Context context = new Context();
        context.setVariable("userId", UUID.randomUUID());
        String emailContent = templateEngine.process("senderTemplate", context);
        Mail mail = new Mail();
        mail.setFrom("winqi@novabeyond.com");
        mail.setTo("627501768@qq.com");
        mail.setSubject("Please active account click under emial...");
        mail.setMailContent(emailContent);
        mailService.sendActiveMail(mail);
    }
}

运行结果如下图:

基于SpringBoot的邮件验证「建议收藏」

基于SpringBoot的邮件验证「建议收藏」 基于SpringBoot的邮件验证「建议收藏」

上面就是激活账号邮件发送基本流程,具体的使用需要根据实际的业务流程对代码做相应的调整。 

想要了解实时博文,可以关注公众号《编程之艺术》

基于SpringBoot的邮件验证「建议收藏」

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24919.html

(0)
上一篇 2023-08-04 19:00
下一篇 2023-08-08 12:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信