邮件发送 + Thymeleaf

引入依赖

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

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

实体类

@Data
public class EmailBean implements Serializable {

    private String[] receiver;

    private String subject;

    private String count;

}

邮件发送工具类

@Component
public class EmailUtil {

    @Value("${spring.mail.username}")
    private String sender;

    @Autowired
    JavaMailSender javaMailSender;

    //纯文本
    public void sendPlainTextMail(EmailBean emailBean){
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(sender);
        simpleMailMessage.setTo(emailBean.getReceiver());
        simpleMailMessage.setSubject(emailBean.getSubject());
        simpleMailMessage.setText(emailBean.getCount());
        javaMailSender.send(simpleMailMessage);
    }
    
    //模板发送
    public void sendMimeMail(EmailBean emailBean) throws Exception {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
        mimeMessageHelper.setFrom(sender);
        mimeMessageHelper.setTo(emailBean.getReceiver());
        mimeMessageHelper.setSubject(emailBean.getSubject());
        mimeMessageHelper.setText(emailBean.getCount(), true);
        javaMailSender.send(mimeMessage);
    }

}

thymeleaf 模板 

模板放在  src/main/resources/templates 下  OneWeekAgain.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h2>活动KPI</h2>
        <table  cellpadding="10" cellspacing="1" style="width: 100%">
            <tr style="background-color: #FE5E5E;color: #F0F8FF">
                <th>活动产品总数</th>
                <th>抽奖次数</th>
                <th>抽奖率</th>
                <th>抽奖人数</th>
                <th>人均抽奖次数</th>
                <th>奖品成功发放数量</th>
                <th>奖品成功发放率</th>
            <tr/>
            <tr th:if="${#lists.isEmpty(kpi.prizeList)}" style="background-color: #FFF4F4;text-align: center">
                <td colspan="7">对不起,该活动下未添加奖品!</td>
            </tr>
            <tr th:unless="${#lists.isEmpty(kpi.prizeList)}" th:object="${kpi}" style="background-color: #FFF4F4;text-align: center">
                <td th:text="*{actPrizeNum}"></td>
                <td th:text="*{outNum}"></td>
                <td th:text="*{rate}"></td>
                <td th:text="*{aveCount}"></td>
                <td th:text="*{rateAve}"></td>
                <td th:text="*{grantSuccess}"></td>
                <td th:text="*{grantSuccessRate}"></td>
            </tr>
        </table>

        <br />

        <table cellpadding="10" cellspacing="1" style="width: 100%">
            <tr style="background-color: #FE5E5E;color: #F0F8FF">
                <th>活动预算费用</th>
                <th>已抽奖金额</th>
                <th>实际发放金额</th>
                <th>费用消耗百分比</th>
                <th>商户号余额</th>
                <th>平均每日发放金额</th>
            <tr/>
            <tr th:if="${#lists.isEmpty(kpi.prizeList)}" style="background-color: #FFF4F4;text-align: center">
                <td colspan="6">对不起,该活动下未添加奖品!</td>
            </tr>
            <tr th:unless="${#lists.isEmpty(kpi.prizeList)}" th:object="${kpi}" style="background-color: #FFF4F4;text-align: center">
                <td th:text="*{money}"></td>
                <td th:text="*{outMoney}"></td>
                <td th:text="*{realityOutMoney}"></td>
                <td th:text="*{moneyOutRate}"></td>
                <td th:text="*{residueMoney}"></td>
                <td th:text="*{moneyDayAvg}"></td>
            </tr>
        </table>

        <h2>活动每周数据</h2>

        <table   cellpadding="10" cellspacing="1" style="width: 100%" >
            <tr style="background-color: #FE5E5E;color: #F0F8FF">
                <th colspan="2"></th>
                <th colspan="2" th:each="item : ${oneWeekSource.successSource}" th:text="${item.name}"></th>
                <th colspan="2" th:each="item : ${oneWeekSource.failSource}" th:text="${item.name}"></th>
                <th colspan="4">合计数量</th>
            <tr/>
            <tr style="background-color: #FE5E5E;color: #F0F8FF;text-align: center">
                <td>开始日</td>
                <td>结束日</td>
                <td th:each="item : ${oneWeekSource.oneWeekPrizeSource}" th:text="${item}"></td>

                <td>数量(成功)</td>
                <td>金额(成功)</td>
                <td>数量(失败或未领取)</td>
                <td>金额(失败或未领取)</td>
            <tr/>
            <tr th:if="${#lists.isEmpty(kpi.prizeList)}" style="background-color: #FFF4F4;text-align: center">
                <td>对不起,该活动下未添加奖品!</td>
            </tr>
            <tr th:unless="${#lists.isEmpty(kpi.prizeList)}" th:object="${oneWeekSource}" style="background-color: #FFF4F4;text-align: center">
                <td th:text="*{beginTime}"></td>
                <td th:text="*{endTime}"></td>
                <td th:each="item : *{successPrize}" th:text="${item}"></td>
                <td th:each="item : *{failPrize}" th:text="${item}"></td>
                <td th:text="*{oneWeekSuccessNum}"></td>
                <td th:text="*{oneWeekSuccessMoney}"></td>
                <td th:text="*{oneWeekFailNum}"></td>
                <td th:text="*{oneWeekFailMoney}"></td>
            </tr>
        </table>
    </body>
</html>

简单教程:http://t.csdnimg.cn/A3yCQ

中文文档:https://fanlychie.github.io/post/thymeleaf.html

官方文档:Documentation - Thymeleaf

邮箱发送


    @Autowired
    private TemplateEngine templateEngine;
    
    @Autowired
    private EmailUtil emailUtil;

    public void oneTenantEmail(JSONObject jsonObject,JSONObject oneWeekSource,AgainConfig againConfig,LocalDate currentDate,LocalDate oneWeekAgo,Long id){
        Context context = new Context();
        //Thymeleaf模板中所用到的数据
        context.setVariable("kpi",jsonObject);
        context.setVariable("oneWeekSource",oneWeekSource);
        //OneWeekAgain  Thymeleaf模板文件名称
        String emailContent = templateEngine.process("OneWeekAgain", context);
        JSONObject ruleConfig = againConfig.getRuleConfig();
        if (ruleConfig.getInteger("mail_status") == 1 && !StringUtils.isEmpty(ruleConfig.getString("mail"))) {
            EmailBean emailBean = new EmailBean();
            String email = ruleConfig.getString("mail");
            String[] receiver = email.split("\\|");
            if (isEmailValid(receiver)) {
                //邮箱
                emailBean.setReceiver(receiver);
                //主题
                emailBean.setSubject(againConfig.getActName()+"("+ oneWeekAgo+"至"+currentDate+")");
                //内容
                emailBean.setCount(emailContent);
                try {
                    emailUtil.sendMimeMail(emailBean);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                logger.info("资金周数据邮件发送成功!");
            } else {
                logger.error("邮件发送失败!ID:{},活动名称:{},邮箱格式错误!",id,againConfig.getActName());
            }
        } else {
            logger.error("邮件发送失败!ID:{},活动名称:{},没有配置邮箱!",id,againConfig.getActName());
        }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值