大家好,欢迎来到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文件模板,如下图所示:
具体代码如下:
<!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);
}
}
运行结果如下图:
上面就是激活账号邮件发送基本流程,具体的使用需要根据实际的业务流程对代码做相应的调整。
想要了解实时博文,可以关注公众号《编程之艺术》
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/24919.html