文章目录
1. 发送邮件
1.1 邮箱设置
- 打开邮箱POP3/SMTP服务
1.2 Spring Email
-
导入spring mail相关依赖jar包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.1.5.RELEASE</version> </dependency>
-
邮箱参数设置
MailProperties
spring.mail.host=smtp.sina.com
spring.mail.port=465
spring.mail.username=pingsiyuan1997@sina.com
spring.mail.password=此处配置密码
spring.mail.protocol=smtps
spring.mail.properties.mail.smtp.ssl.enable=true -
使用JavaMailSender发送邮件
① 新建一个工具类包util,在 util 下编写 MailClient
② 核心组件:JavaMailSender
③ 使用 MimeMessageHelper 构建 MimeMessagepackage com.nowcoder.community.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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;@Component
public class MailClient {private static final Logger logger = LoggerFactory.getLogger(MailClient.class); @Autowired private JavaMailSender mailSender; //发件人 @Value("${spring.mail.username}") private String from; public void sendMail(String to, String subject, String content) { try { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); mailSender.send(helper.getMimeMessage()); } catch (MessagingException e) { logger.error("发送邮件失败:" + e.getMessage()); } }
}
-
创建测试类
package com.nowcoder.community;
import com.nowcoder.community.util.MailClient;
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.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class MailTests {@Autowired private MailClient mailClient; @Autowired private TemplateEngine templateEngine; @Test public void testTextMail() { mailClient.sendMail("lihonghe@nowcoder.com", "TEST", "Welcome."); } @Test public void testHtmlMail() { Context context = new Context(); context.setVariable("username", "sunday"); String content = templateEngine.process("/mail/demo", context); System.out.println(content); mailClient.sendMail("lihonghe@nowcoder.com", "HTML", content); }
}
2. 注册功能
2.1 访问注册页面
-
在cintroller下实现 LoginController
package com.nowcoder.community.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class LoginController {@RequestMapping(path = "/register", method = RequestMethod.GET) public String getRegisterPage() { return "/sit/register"; }
}
-
调整register.html页面中的相对路径,首行加Thymeleaf声明,在之前有写过处理方法
-
复用头部
<!-- 头部 --> <header class="bg-dark sticky-top" th:fragment="header"> <!-- 头部 --> <header class="bg-dark sticky-top" th:replace="index::header">
-
鼠标悬停之后显示目标页面
-
点击注册之后进入注册页面
2.2 提交注册数据
-
导入新包
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</version> </dependency>
-
配置域名
community
community.path.domain=http://localhost:8080
-
在util包下新建工具类
package com.nowcoder.community.util;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.DigestUtils;import java.util.UUID;
public class CommunityUtil {
// 生成随机字符串 public static String generateUUID() { return UUID.randomUUID().toString().replaceAll("-", ""); } // MD5加密 // hello -> abc123def456 // hello + 3e4a8 -> abc123def456abc public static String md5(String key) { if (StringUtils.isBlank(key)) { return null; } return DigestUtils.md5DigestAsHex(key.getBytes());