springboot javaMailSender 发送带附件的模板邮件

本文详细介绍了如何在SpringBoot应用中使用Thymeleaf模板创建邮件,并附带附件,包括依赖引入、HTML模板编写、邮件配置以及JavaMailSender的实现。
摘要由CSDN通过智能技术生成

经常遇到需要发送带附件的邮件的功能,特写一份详细的笔记

1、老样子,首先引入依赖

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

<!--thymeleaf 邮件模板依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>2.5.4</version>
</dependency>

2、编写一份邮件的html模板

邮件模板放在 resource/templates路径下

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>template</title>
    <style>
        p {
            font-size: larger;
            font-weight: bold;
        }
        #yes {
            padding: 10px;
            font-size: 16px;
            border: none;
            border-radius: 5px;
            background-color: orange;
            color: white;
        }
        #no {
            padding: 10px;
            font-size: 16px;
            border: none;
            border-radius: 5px;
            background-color: darkgrey;
            color: white;
        }
        div {
            width: 100%;
            margin: 0 auto;
        }
        div.offer-info {
            padding: 10px 10px 0;
            border-top: 1px solid #ccc;
            color: #747474;
            margin-bottom: 20px;
            line-height: 1.3em;
            font-size: 12px;
        }
        #note,#note1{
            font-weight: bold;
        }
    </style>
</head>
<body>
<p>XXXXXX</p>

<span th:text="${userName}"></span>,您好
<br>
<br>
<div>请查收XXXXXX</div><br>
<span id="note">您的XXXXXX</span><br><br>
<span id="note1" style="color: orange">请点击XXXX</span><br><br>


<button id="no">A</button>
<button id="yes">B</button>
<br>
<br>
<div class="offer-info">
    <br>
    <p>此为系统邮件,请勿回复<br>Please do not reply to this system email</p>
</div>
</body>
</html>

3、邮件配置

offerMail:
  host: mail.XXXXX.com
  port: 25
  sender: XXXXXX@XXXX.com
  password: XXXXXXXX

4、上代码


@Service
public class Template {

   	@Autowired
    private TemplateEngine templateEngine;

    private JavaMailSenderImpl javaMailSender = null;


	public void sendThymeleafMail() throws Exception {
        JavaMailSender javaMailSender = getJavaMailSenderParam();
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setSubject("邮件标题");
        helper.setFrom("XXXXX@XX.com");
        helper.setTo("XXXX@qq.com");
        helper.setSentDate(new Date());

        // 绑定到mail.thymeleaf模板的数据
        Context context = new Context();
        context.setVariable("userName", "Tom");
        String process = templateEngine.process("mail.html", context);
        // setText()第二个参数:开启html模板
        helper.setText(process, true);

        // 添加附件 TODO
        File emailFile = new File();
        helper.addAttachment("XXXX.PDF", emailFile);
        javaMailSender.send(mimeMessage);
    }
}

    private JavaMailSender getJavaMailSenderParam() {
        if (javaMailSender != null) {
            return javaMailSender;
        }
        System.getProperties().setProperty("mail.mime.splitlongparameters", "false");

        javaMailSender = new JavaMailSenderImpl();

        Properties properties = new Properties();
        properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        javaMailSender.setJavaMailProperties(properties);
        javaMailSender.setPort(appConfig.getOfferMail().getPort());
        javaMailSender.setUsername(appConfig.getOfferMail().getSender());
        javaMailSender.setPassword(appConfig.getOfferMail().getPassword());
        javaMailSender.setDefaultEncoding("UTF-8");
        javaMailSender.setHost(appConfig.getOfferMail().getHost());
        return javaMailSender;
    }

搞定

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaMailSenderJavaMail API中的一个类,用于发送电子邮件。使用JavaMailSender发送附件邮件可以按照以下步骤进行: 1. 创建一个JavaMailSender实例,可以通过注入或手动创建。 2. 创建一个MimeMessage实例,它将被用来构建电子邮件。 3. 使用MimeMessageHelper类的帮助方法,如addAttachment(),来添加附件。该类可以通过传入MimeMessage实例来实例化。 4. 设置电子邮件的其他属性,如收件人地址、主题、邮件内容等。 5. 使用JavaMailSendersend()方法发送邮件。该方法需要一个MimeMessage参数。 以下是一个示例代码片段,展示了使用JavaMailSender发送附件邮件的步骤: ```java @Autowired private JavaMailSender javaMailSender; public void sendEmailWithAttachment(String toEmail, String subject, String body, String attachmentPath) { try { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo(toEmail); helper.setSubject(subject); helper.setText(body); // 添加附件 FileSystemResource file = new FileSystemResource(new File(attachmentPath)); helper.addAttachment(file.getFilename(), file); javaMailSender.send(message); System.out.println("邮件发送成功!"); } catch (MessagingException e) { System.out.println("邮件发送失败:" + e.getMessage()); } } ``` 在上面的示例中,我们首先创建一个MimeMessage对象,然后使用MimeMessageHelper类的实例化对象来构建邮件消息。将收件人地址、邮件主题和内容都设置好之后,使用addAttachment()方法将附件添加至邮件中。 最后,通过调用JavaMailSendersend()方法来发送邮件。如果发送成功,将输出"邮件发送成功!",否则输出"邮件发送失败:"并附上错误信息。 以上就是使用JavaMailSender发送邮件附件的简单步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值