springoot发送邮件(一)

一、开启邮箱的SMTP服务——以新浪邮箱为例

SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。

二、配置Spring Email

  1. 引入入Spring Email依赖
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
  1. 邮箱参数配置
    application.yml中添加以下配置
spring:
  mail:
    host: smtp.sina.com
    port: 465
    username: xxx@sina.com
    password: xxx  #此处填写授权密码 
    protocol: smtps  #协议
    properties:
      mail:
        smtp:
          ssl:
            enadle: true
  1. 编写邮件发送工具类
    发送邮件的功能主要由JavaMailSender类实现
    MimeMessageHelper类用于添加邮件内容
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 Logger logger = LoggerFactory.getLogger(MailClient.class);

    @Autowired
    JavaMailSender mailSender;

    //发件人
    @Value("${spring.mail.username}")
    private String from;

    /**
     * 发送邮件
     *
     * @param to      收件人
     * @param subject 主题
     * @param content 内容
     */
    public void sendMail(String to, String subject, String content) {
        //构建message模板
        MimeMessage message = mailSender.createMimeMessage();
        //添加内容
        MimeMessageHelper helper = new MimeMessageHelper(message);
        try {
            //设置发件人
            helper.setFrom(from);
            //设置收件人
            helper.setTo(to);
            //设置主题
            helper.setSubject(subject);
            //设置内容,true支持html
            helper.setText(content, true);
            //发送
            mailSender.send(helper.getMimeMessage());
        } catch (MessagingException e) {
            logger.error("发送邮件失败:" + e.getMessage());
        }
    }
}
  1. 测试
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class MailTest {
    @Autowired
    private MailClient mailClient;

    @Test
    public void test1() {
        mailClient.sendMail("xxx@163.com", "test", "这是测试内容...");
    }
}

三、使用Thymeleaf发送html邮件

  1. 编写html邮件模板
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>邮件示例</title>
</head>
<body>
    <p>
        你好,<span style="color: blue" th:text="${username}"></span>
    </p>
</body>
</html>
  1. 编写测试类
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

@SpringBootTest
public class MailTest {
    @Autowired
    private MailClient mailClient;
    @Autowired
    private TemplateEngine templateEngine;

    @Test
    public void testHtmlMail(){
        Context context = new Context();
        context.setVariable("username","Lisa");
        String content = templateEngine.process("mail/demo", context);
        mailClient.sendMail("xxx@163.com","html",content);
    }
}
posted @ 2022-07-13 10:11  DaleLee  阅读(38)  评论(0)    收藏  举报