java 读取邮件 并生成邮件文件eml_mob64ca12de24b0的技术博客_51CTO博客java 读取邮件 并生成邮件文件eml,##Java读取邮件并生成邮件文件eml###1.简介Java作为一种广泛使用的编程语言,提供了丰富的API和库,可以方便地实现各种功能。在邮件领域,Java也提供了一些API来读取和处理邮件。本文将介绍如何使用Java来读取邮件,并将其保存为邮件文件(.eml)。###2.读取邮件在Java中,可以使用JavaMailAPI来读取邮件。JavaMail是一个用于发送、https://blog.51cto.com/u_16213355/7864841java生成eml文件_mob64ca12e9cad4的技术博客_51CTO博客java生成eml文件,#Java生成EML文件的实现##简介EML文件是一种用于电子邮件的标准文件格式,它可以在不同的邮件客户端之间进行互操作。在Java中,我们可以使用JavaMailAPI来生成EML文件。本文将介绍如何使用JavaMailAPI来创建和保存EML文件,并提供代码示例。##依赖要使用JavaMailAPI,需要将其添加到项目的依赖中。可以通过在`pom.xml`文件中添加
https://blog.51cto.com/u_16213404/7683171如何解决freemarker静态化生成html页面乱码的问题_java_脚本之家 (jb51.net)
https://www.jb51.net/article/272529.htm
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();
}
}
}