通过FreeMarker模板生成邮件发送EML

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值