SpringBoot 发送邮件

Posted jrookie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 发送邮件相关的知识,希望对你有一定的参考价值。

准备

1. 引入依赖

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

2. 在application.yml中配置必要的属性

PS: 在这里因为使用的是QQ邮箱,而QQ邮箱的软件收发服务是默认关闭的,需要手动打开
进入邮箱->账户设置

spring:
    mail:
        host: smtp.qq.com
        username: 邮箱用户名
        password: 密码或验证码
        properties:
          mail:
            smtp:
              auth: true
              starttls:
                enable: true
                required: true

3. 发送简单邮件

    @Autowired
    private JavaMailSender mailSender;

    @Test
    public void sendSimpleMail() throws Exception {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom("邮件发送方");
        message.setTo("邮件接收方");
        message.setSubject("主题");
        message.setText("正文");

        mailSender.send(message);
    }

4. 发送模板邮件(使用thymeleaf来做)

1. 引入thymeleaf依赖

<!-- 引入thymeleaf模块 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>2.0.0.RELEASE</version>
        </dependency>

2. 配置thymeleaf

# thymeleaf 参数配置
spring:
  thymeleaf:
    cache: true
    prefix: classpath:/templates/
    suffix: .html
    encoding: UTF-8
    servlet:
      content-type: text/html
    check-template-location: true
    enabled: true
    mode: HTML5

3. 编写模板

<html xmlns:th="http://www.w3.org/1999/xhtml">
<body>
<p>
    吾儿,<span th:text="${username}">错误</span>,最后一次测试了!!!
</p>
</body>
</html>

4. 编写发送方法

    @Autowired
    private TemplateEngine templateEngine;

    @Autowired
    private JavaMailSender mailSender;
    
    public void sendTemplateMail() throws  Exception{
        MimeMessage message = mailSender.createMimeMessage();

        MimeMessageHelper helper = new MimeMessageHelper(message);
        helper.setFrom("发送方");
        helper.setTo("接收方");
        helper.setSubject("主题");

        Context context = new Context();
        context.setVariable("username","name");
        String emailContent = templateEngine.process("template",context);
        helper.setText(emailContent,true);

        mailSender.send(message);

    }


以上是关于SpringBoot 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

25springboot发送邮件

25springboot发送邮件

补习系列(12)-springboot 与邮件发送

使用SpringBoot发送mail邮件

java springboot+maven发送邮件

SpringBoot定时发送邮件