SpringBoot 邮件发送

本文介绍了如何在Spring Boot应用中配置并使用邮件发送功能,包括设置邮件服务器信息、发送简单邮件、带附件的邮件以及包含图片的邮件。此外,还展示了如何结合Thymeleaf模板发送包含动态内容的邮件,如入职通知,其中包含了姓名、职位和薪水等个性化信息。
摘要由CSDN通过智能技术生成

导入依赖

pom.xml

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

配置文件

application.yaml

#一般配置
spring:
  mail:
    username: 2090332885@qq.com
    password: iipohkkqxhqbbggb
    host: smtp.qq.com

application.properties

# 腾讯的邮件服务器
spring.mail.host=smtp.qq.com
# 我们在准备工作中找到的服务器端口号
spring.mail.port=465
# 邮箱的账号
spring.mail.username=xxx@qq.com
# 开启服务时,服务器返回给我们的授权码
spring.mail.password=xxxxx
# 编码
spring.mail.default-encoding=utf-8
# 加密连接的工具类
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
# 开启debug
spring.mail.properties.mail.debug=true;

测试

@SpringBootTest
class SpringbootLearnApplicationTests {
    @Autowired
    JavaMailSender javaMailSender;

    /*简单的邮件发送*/
    @Test
    void contextLoads() {
        SimpleMailMessage simpMsg = new SimpleMailMessage();
        // 发送人的邮箱
        simpMsg.setFrom("2090332885@qq.com");
        // 接收人的邮箱
        simpMsg.setTo("1579844217@qq.com");
        // 发送的时间
        simpMsg.setSentDate(new Date());
        // 发送邮件的主题
        simpMsg.setSubject("邮件主题-测试邮件");
        // 发送邮件的内容
        simpMsg.setText("邮件内容-测试邮件");
        javaMailSender.send(simpMsg);
    }

    /*带附件的邮件发送*/
    @Test
    void test1() throws MessagingException {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        // 发送人的邮箱
        helper.setFrom("2090332885@qq.com");
        // 接收人的邮箱
        helper.setTo("1579844217@qq.com");
        // 发送的时间
        helper.setSentDate(new Date());
        // 发送邮件的主题
        helper.setSubject("邮件主题-测试邮件");
        // 发送邮件的内容
        helper.setText("邮件内容-测试邮件");
        // 要发送的附件
        File file = new File("C:\\solo-file\\picture\\a-2.jpg");
        helper.addAttachment(file.getName(),file);
        javaMailSender.send(mimeMessage);
    }

    /*邮件内容中带有图片的邮件发送*/
    @Test
    void test2() throws MessagingException {
        // 要发送的附件
        File file = new File("C:\\solo-file\\picture\\a-2.jpg");
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        // 发送人的邮箱
        helper.setFrom("2090332885@qq.com");
        // 接收人的邮箱
        helper.setTo("1579844217@qq.com");
        // 发送的时间
        helper.setSentDate(new Date());
        // 发送邮件的主题
        helper.setSubject("邮件主题-测试邮件");
        // 发送邮件的内容, 第一个参数表示发送的 HTML 文件内容,第二个参数表示支持 HTML 。
        // 其中,img 标签中的 'cid:p01' 表示占位符
        helper.setText("<div>带有图片的邮件内容:</div><div><img src='cid:p01'/></div>",true);
        helper.addAttachment("p01",file);
        javaMailSender.send(mimeMessage);
    }
}


在 resources/templates 目录下创建 Thymeleaf 模板

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div>欢迎 <span th:text="${username}"></span> 加入 <span th:text="${company}"></span> 大家庭,您的入职信息如下:</div>
<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: #ff0016;font-size: large">希望在未来的日子里携手奋进!</div>
</body>
</html>

发送邮件

@Autowired
TemplateEngine templateEngine;

@Test
void test4() throws MessagingException, IOException, TemplateException {
    MimeMessage mimeMessage = javaMailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    // 发送人的邮箱
    helper.setFrom("1963385876@qq.com");
    // 接收人的邮箱
    helper.setTo("2516313840@qq.com");
    // 发送的时间
    helper.setSentDate(new Date());
    // 发送邮件的主题
    helper.setSubject("邮件主题-测试邮件");
    // 设置上下文
    Context ctx = new Context();
    ctx.setVariable("username","crc");
    ctx.setVariable("position","Java工程师");
    ctx.setVariable("company","xxx集团");
    ctx.setVariable("salary","99999");
    // 参数1 表示模板的位置(默认在template目录下查找),参数2 表示模板的上下文,不能使用对象
    String text = templateEngine.process("mail.html", ctx);
    // 设置邮件内容
    helper.setText(text, true);
    javaMailSender.send(mimeMessage);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值