package com.example.demo;
import com.google.common.collect.Lists;
import freemarker.cache.FileTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.DefaultObjectWrapperBuilder;
import freemarker.template.Template;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.*;
import java.math.BigDecimal;
import java.util.*;
public class FreemarkerDemo {
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class AccountBalance{
public String fundName;
public String fundCode;
public String saleOrgan;
public BigDecimal balance;
public BigDecimal netValue;
public BigDecimal availableAsset;
public String bonusType;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public static class TradeDetail{
public String applyDate;
public String fundName;
public String businessType;
public BigDecimal confirmShare;
public BigDecimal confirmMoney;
public BigDecimal dailyNetValue;
public BigDecimal fee;
public BigDecimal performance;
}
private static void generateTemplate() throws Exception {
Configuration cof = new Configuration(Configuration.VERSION_2_3_0);
cof.setObjectWrapper(new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_0).build());
try {
cof.setDefaultEncoding("UTF-8");
cof.setTemplateLoader(new FileTemplateLoader(new File("C:\\Users\\zhoushun\\Desktop\\workspace\\demo\\src\\main\\resources\\templates")));
Template temp = cof.getTemplate("test.ftl");
StringWriter writer = new StringWriter();
//FileWriter writer = new FileWriter("C:\\Users\\zhoushun\\Desktop\\workspace\\demo\\src\\main\\resources\\templates\\test.html");
Map<String,Object> model = new HashMap<>();
//填充目标对象
model.put("year","2023");
model.put("season","四");
model.put("account99","99X000000001");
model.put("account98","98X000000001");
model.put("account0W","OWX000000001");
model.put("organ","东方证券");
model.put("customer","测试客户姓名");
model.put("beginDate","2023-10-01");
model.put("endDate","2023-12-31");
model.put("accountBalanceList", Lists.newArrayList(
new AccountBalance("东方红沪港深","XXXXXX","招商银行",new BigDecimal("10.04"),new BigDecimal("1.0000"),new BigDecimal("10.04"),"红利再投资"),
new AccountBalance("东方红货币E","XXXXXX","招商银行",new BigDecimal("1.88"),new BigDecimal("3.6069"),new BigDecimal("174.51"),"现金红利"),
new AccountBalance("东方红沪港深","XXXXXX","招商银行",new BigDecimal("174.51"),new BigDecimal("1.0000"),new BigDecimal("10.04"),"红利再投资"),
new AccountBalance("东方红启恒三年持有B","XXXXXX","招商银行",new BigDecimal("3.65"),new BigDecimal("1.0000"),new BigDecimal("1024.69"),"现金红利"),
new AccountBalance("东方红京东大数据","XXXXXX","招商银行",new BigDecimal("776.28"),new BigDecimal("1.0000"),new BigDecimal("10.04"),"红利再投资")));
model.put("totalBalance",new BigDecimal("1340.20"));
model.put("totalAvailableAsset",new BigDecimal("2518.51"));
model.put("tradeDetailList", Lists.newArrayList(
new TradeDetail("2023-08-28","东方红智富宝(货币D)","申购",new BigDecimal("174.23"),new BigDecimal("1.0000"),new BigDecimal("0.00"),new BigDecimal("0.00"),new BigDecimal("0.00")),
new TradeDetail("2023-09-07","东方红智富宝(货币D)","赎回",new BigDecimal("174.23"),new BigDecimal("3.6069"),new BigDecimal("174.51"),new BigDecimal("1.288"),new BigDecimal("0.00")),
new TradeDetail("2023-08-28","东方红睿丰","申购",new BigDecimal("174.51"),new BigDecimal("1.0000"),new BigDecimal("10.04"),new BigDecimal("0.00"),new BigDecimal("0.00")),
new TradeDetail("2023-08-28","东方红睿丰","修改分红方式",new BigDecimal("0.00"),new BigDecimal("1.0000"),new BigDecimal("1024.69"),new BigDecimal("1.321"),new BigDecimal("0.00")),
new TradeDetail("2023-09-07","东方红睿丰","修改分红方式",new BigDecimal("776.28"),new BigDecimal("1.0000"),new BigDecimal("10.04"),new BigDecimal("0.00"),new BigDecimal("0.00"))));
temp.process(model, writer);
//System.out.println(writer.toString());
Properties properties = new Properties();
Session session = Session.getDefaultInstance(properties,null);
MimeMessage message = new MimeMessage(session);
//message.setFrom(new InternetAddress("zhoushun@dfham.com"));
message.addRecipient(Message.RecipientType.TO,new InternetAddress("zhoushun@dfham.com"));
message.setSubject("邮件标题:测试EML文件生成");
//message.setText(writer.toString());
//multipart message
Multipart multipart = new MimeMultipart();
// 设置邮件的文本内容
BodyPart textPart = new MimeBodyPart();
textPart.setContent(writer.toString(),"text/html;charset=utf-8");
multipart.addBodyPart(textPart);
message.setContent(multipart);
FileOutputStream fos = new FileOutputStream("C:\\Users\\zhoushun\\Desktop\\workspace\\demo\\src\\main\\resources\\templates\\test.eml");
message.writeTo(fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
generateTemplate();
sendMail();
}
private static void sendMail(){
Properties properties = System.getProperties();
properties.put("mail.smtp.auth", "false");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", "10.118.130.19");
properties.put("mail.smtp.port", 8135);
Session session = Session.getInstance(properties);
try {
//MimeMessage message = new MimeMessage(session,new FileInputStream("C:\\Users\\zhoushun\\Desktop\\workspace\\demo\\src\\main\\resources\\templates\\月度对账单样例.eml"));
MimeMessage message = new MimeMessage(session,new FileInputStream("C:\\Users\\zhoushun\\Desktop\\workspace\\demo\\src\\main\\resources\\templates\\test.eml"));
//message.setFrom(new InternetAddress("TET@hotmail.com"));
//message.addRecipient(Message.RecipientType.TO,
// new InternetAddress("zhoushun@dfham.com"));
//message.setSubject("This is the Subject Line!");
//message.set("This is actual message");
//
// //multipart message
// Multipart multipart = new MimeMultipart();
// // 设置邮件的文本内容
// BodyPart contentPart = new MimeBodyPart();
// multipart.addBodyPart(contentPart);
// // 添加附件
// BodyPart messageBodyPart = new MimeBodyPart();
// contentPart.setText("测试测试测试测试测试测试测试测试");
// DataSource source = new FileDataSource("C:\\Users\\zhoushun\\Downloads\\月度对账单样例.eml");
// // 添加附件的内容
// messageBodyPart.setDataHandler(new DataHandler(source));
// sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
// messageBodyPart.setFileName("=?GBK?B?"+ enc.encode("测试".getBytes()) + "?=");
// multipart.addBodyPart(messageBodyPart);
// message.setContent(multipart);
// message.saveChanges();
Transport.send(message);
System.out.println("Sent message successfully....");
} catch (Exception mex) {
mex.printStackTrace();
}
}
}
emqx如何查看数据在哪里
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:datax 使用架构
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
如何查看emqx的文件日志
1. sftp securecrt 按下ALT+P就开启新的会话 进行ftp操作。 输入:help命令,显示该FTP提供所有的命令 pwd: 查询linux主机所在目录(也就是远程主机目录)
如何查看emqx的文件日志 linux 上传 档案文件