1、maven配置
<!-- 邮件模版 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-velocity</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
2、velocity邮件模板
<html>
<head>
<style type="text/css">
html,body{
height: 100%;
width: 100%;
}
.container{
width: 100%;
height: 100%;
font-size: 12px;
font-family: "微软雅黑";
}
.header{
width: 100%;
background: #F8F8F8;
padding: 1px 0px 10px;
}
.header p{
height: 10px;
margin-right: 15px;
}
.header .img{
width: 20px;
height: 20px;
vertical-align: middle;
margin-left: 20px;
margin-right: 5px;
}
.header span{
color: #3A99FF;
vertical-align: middle;
}
.header a{
margin-left: 8px;
vertical-align: middle;
}
.header a:hover,.header a:active{
color:red;
}
.content{
width:400px;
background: #eee;
margin: auto;
margin-top: 30px;
padding-bottom: 80px;
}
.c-top{
height: 60px;
background: #ddd;
padding: 3px 10px ;
}
.c-top h1{
font-weight: normal;
font-size:16px ;
line-height:10px ;
}
.c-top span{
font-weight: normal;
font-size:14px ;
padding-left: 5px;
}
.c-bot{
padding-left:10px;
font-size: 14px;
}
.c-bot p {
padding-left:30px;
}
.c-bot .first {
padding-left:0px;
}
.icon {
width: 1em; height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<#list fileUrlList as fileUrl>
<p>
<img class="img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTE2ODgyNEQ0NkEzMTFFN0I0RjBBNTEzQ0E2RjZDN0EiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTE2ODgyNEU0NkEzMTFFN0I0RjBBNTEzQ0E2RjZDN0EiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFMTY4ODI0QjQ2QTMxMUU3QjRGMEE1MTNDQTZGNkM3QSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFMTY4ODI0QzQ2QTMxMUU3QjRGMEE1MTNDQTZGNkM3QSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnlnYe4AAAFKUExUReIYCN0AANoAAOAHAOMdD+IYCeUuINwAAN8AAOIYB+lQRe1rYfnQzeAGAOIVBvOZku1tZOEQBOENBeMaCOAMBeQiEtsAAOISBeMZB/azruELAeUvIvOel+EKAO1xaOIUCeIUB+YzJ+IWCOMZCPWuqelJQeIZCOMfEeAEAPe7uPOble56d/ra2/nLxfnMyeUwKutiX+xjWN8DAOIXD+1uZPzq6eERBeACAOELAOENAeENAPKUjeIVB+1wZvGPh+MgEvnRz+ANBOMYB+IXCOUrHPrT0PKVjuY5LOtgVeUwI+Y3MOIcF98JA/WspuADAOpSR/3u6+ETCfKVjeESAuEMAOEPAt8CAOxoXt8FAfSgmeERBPSoouU0Lfa1sO9+dec7Lv3x8N4AAOEPA/zp5/SlneMYBuY3Kt8BAOlRRu1tY+MiFP///+IWB9bA2OIAAABudFJOU/8AoAU8MwAAANhJREFUeNpiyNVTZ82CAaE0h1wgYMi1zUEAjfhIHrAgN5Kgn7svPw9IMBNJ0IolTsbNFU2QwVLehc0QLsgQJcUApJxDmZlV4YKcCiKCDBDlGXDBRIFkVgt0QUa5bDZzdEFmRR1vWXTBkMBsbbFUVEEGRgOVlBgmdkdhhKCEEZNmUHR2rJYnL1xQmcNYN8E608M0O5wRLpgunZ2tz8TI7iNqgzCTgyvAi5EzhyEpTJwBLqhmxhjhBA+ADEjQKfEFI4UKF1DQJAcN+AMFJXNYspCAfY5dLkCAAQDDLYepukzthAAAAABJRU5ErkJggg=="/>
<span>发票${fileUrl_index+1}.pdf</span>
<a href="${fileUrl}">下载</a>
</p>
</#list>
</div>
<div class="content">
<div class="c-top">
<h1>北京多来点信息技术有限公司</h1>
<span class="">www.hualala.com</span>
</div>
<div class="c-bot">
<p class="first">尊敬的用户:</p>
<p>您好,您的发票已开具成功。请点击附件下载。</p>
<p>开票企业:<span>北京多来点信息技术有限公司</span></p>
<p>发票抬头:<span>${transInvoiceTitle}</span></p>
<p>发票金额:¥<span>${transInvoiceAmount}</span></p>
<p>开票时间:<span>${eInvoiceOpenSubmitTime}</span></p>
</div>
</div>
</div>
</body>
</html>
3、代码
// freemarker文件读取
@Autowired
Configuration configuration;
// 读取模板
Template template = configuration.getTemplate("email01.vm");
// 传入变量,获取html
String message = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
4、结果