spring boot 发送邮件

本文介绍了如何在Spring Boot项目中设置并使用邮件服务,包括添加相关依赖、配置SMTP信息,详细展示了发送文本邮件、带有附件的邮件以及包含图片的邮件的实现过程,并提到了利用Thymeleaf作为邮件模板的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备:发送者需要开启POP3、SMTP协议
在这里插入图片描述
需要授权码:
在这里插入图片描述

(1)添加依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>

(2)在application.yml 配置

spring:
  mail:
    default-encoding: utf-8 #默认编码
    host: smtp.qq.com #配置SMTP 服务器地址
    username: 3121624188@qq.com #发送者邮箱
    password: yuoijqymwhvxddcj #申请到的授权码
    port: 587 #端口号587或 465
    properties: #配置SSL 加密工厂
      mail:
        smtp:
          socketFactoryClass: javax.net.ssl.SSLSocketFactory
        debug: true #表示开启debug模式,这样,邮件发送的过程会在控制台打印出来,这样方便排查错误
        #配置这些好后,springboot会自动帮我们配置好相关的邮件发送类

(3)发送文本普通邮件

// 发送普通邮件:发送一段文本文件

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    public JavaMailSender javaMailSender;

    @Test
    void contextLoads() {
        SimpleMailMessage message=new SimpleMailMessage();//构建一个邮件对象
        message.setSubject("使用springboot发送邮件测试");//设置邮件主题
        message.setFrom("3121624188@qq.com");//设置邮件发送人,要与application.yml文件配置一致
        message.setTo("2295989051@qq.com");//设置收件人,如果有多个接收人,使用","隔开
        //message.setCc("3121624188@qq.com");//设置抄送人,可以有多个
       //message.setBcc("3121624188@qq.com");//设置隐秘抄送人,可以有多个
        message.setSentDate(new Date());//设置发送日期
        message.setText("小程使用springboot发送邮件的简单测试!!");//设置邮件正文
        javaMailSender.send(message);//发送邮件
    }

在这里插入图片描述

(4)发送带附件的邮件

//  发送带附件的邮件
    @Test
    void sendAttachFileMail() throws MessagingException {
        MimeMessage mimeMessage=javaMailSender.createMimeMessage();
        MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);//true表示构建一个带附件的邮件对象

        helper.setSubject("这是一封测试邮件");
        helper.setFrom("3121624188@qq.com");
        helper.setTo(new String[]{"3121624188@qq.com"});
        helper.setSentDate(new Date());
        helper.setText("小程使用springboot发送可以带附件的邮件 测试!!");
        helper.addAttachment("james.jpg",new File("F:\\詹姆斯.jpg"));//第一个参数是自定义的名称,第二个参数是文件的位置
        javaMailSender.send(mimeMessage);
    }

在这里插入图片描述

(5)正文带图片
// 正文带图片

@Test
public void sendImageMail() throws MessagingException {
    MimeMessage mimeMessage=javaMailSender.createMimeMessage();
    MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
    helper.setSubject("这是一封测试邮件");
    helper.setFrom("3121624188@qq.com");
    helper.setTo("3121624188@qq.com");
    helper.setSentDate(new Date());
    helper.setText(
            "<p>大家好,这是一封测试邮件,这封邮件包含两张图片,分别如下</p>" +
            "<p>第一张图片:</p><img src='cid:p01' /><p>这是第二张图片</p>"
            +"<img src='cid:p02'>",true);
    helper.addInline("p01",new FileSystemResource((new File("F:\\Saved Pictures\\大白2.jpg"))));
    helper.addInline("p02",new FileSystemResource(new File("F:\\詹姆斯.jpg")));
    javaMailSender.send(mimeMessage);
}

在这里插入图片描述
在这里插入图片描述

(6)使用Thymeleaf作为邮件的模板

  <!--引用thymeleaf作为邮件模板-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

email.html文件

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>使用Thymeleaf作为邮件的模板</title>
</head>
<body>
<p>hello 欢迎加入 xxx 大家庭,您的入职信息如下:</p>
<table border="1">
    <tr>
        <td>姓名</td>
        <td th:text="${username}"></td>
    </tr>
    <tr>
        <td>职位</td>
        <td th:text="${position}"></td>
    </tr>
    <tr>
        <td>薪水</td>
        <td th:text="${salary}"></td>
    </tr>
</table>
<div style="color: #ff1a0e">一起努力创造辉煌</div>

</body>
</html>

测试类

@SpringBootTest
public class ThymeleafEmail {

    @Autowired
    public TemplateEngine templateEngine;

    @Autowired
    private JavaMailSender javaMailSender;

    @Test
    public void sendThymeleaf() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setSubject("使用Thymeleaf模板作为发送邮件的模板");
        helper.setFrom("3121624188@qq.com");
        helper.setTo("3121624188@qq.com");
        helper.setSentDate(new Date());
        //这里进入的是Template的Context
        Context context = new Context();
        //设置模板中的变量
        context.setVariable("username","程婷");
        context.setVariable("position","java开发工程师");
        context.setVariable("salary","XXXXXK");
        //第一个参数作为模板的,名称
        String process = templateEngine.process("email.html", context);
        //第二个参数true表示这是html文本
        helper.setText(process,true);
        javaMailSender.send(mimeMessage);

    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值