【Day 5】 学习笔记Springboot仿牛客网论坛实现 -开发社区登录模块之邮件发送功能

开发社区登录模块

从产品的角度功能怎么实现

1 发送邮件功能

邮箱设置

邮箱默认没法从程序调用

启动客户端SMTP 服务

spring email

导入jar包

在mvn repository 网站搜索包 复制maven配置

Spring Boot Starter Mail

邮箱参数配置

在appalication.property 文件

spring.mail.host=smtp.qq.com
spring.mail.port=465
spring.mail.username=
spring.mail.password=
spring.mail.protocol=smtps
spring.mail.properties.mail.smtp.ssl.enable=true

注意这里所填的密码不是邮箱密码是邮箱开启服务之后给的授权码

使用JavaMailSender发送邮件

写一个工具类封装他让他可以复用

新建包util包

注入JavaMailSender

逻辑: 通过服务器发邮件 发送人是固定的 是配置文件里的username

因此注入username

@Value
注解可以注入一些字段的普通属性,并且会自动进行类型转换

@Value("${}")
来注入配置文件里面的信息

@Value(“#{}”)

其实是SpEL表达式的值,可以表示常量的值,或者获取bean中的属性

@Value("#{1}")
	private int number; //获取数字 1
	
	@Value("#{'Spring Expression Language'}") //获取字符串常量
	private String str;
	
	@Value("#{dataSource.url}") //获取bean的属性
	private String jdbcUrl;

util包下的发送邮件工具类 代码

package 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());
       }

    }
}

模板引擎

使用thymeleaf 发送一个html邮件 可以携带更为丰富的信息

做模板:

放在template 的mail目录下

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.com">
<head>
    <meta charset="UTF-8">
    <title>邮件实例</title>
</head>
<body>
<p>
  欢迎你,<span style="color:red;"
 th:text="${username}"></span>!</p>

</body>
</html>

在这里1 因为用的是thymeleaf 所以要加上xmlns:th=“http://www.thymeleaf.com”>

2 欢迎你某某某 中间是变量用一个span 来书写

测试:

回忆:在普通的spring mvc 中如果想要使用模板引擎在controller中传入模板引擎的路径 dispachservlet 会帮我们自动调取

在这次我们要主动调取模板引擎

thymeleaf 模板引擎有一个核心的类 : TemplateEngine 这个类被spring 容器所管理 所以我们直接注入就可以使用。

你可能感兴趣的:(springboot,spring,boot,学习,java)