java导出execl并发送邮件

添加jar包
activation.jar
mail.jar

maven的话

	<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4.7</version>
		</dependency>

javaMail核心类
1、Session 可以理解为jdbc中Connection的作用
2、MimeMessage 邮件信息类
3、Transport 发送器用来发送邮件的

导出execl这里就不写了,但是需要将execl生成数据流

 //生成execl数据流
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        workBook.write(os);
        ByteArrayInputStream iss = new ByteArrayInputStream(os.toByteArray());
        os.close();
        long startTime = System.currentTimeMillis();
        String time = DateUtils.getStrDate(startTime, DateUtils.DATE_FORMAT) + "区域平安每日新增变更汇总表";
        try {
            //发送邮件
            Properties prop = new Properties();
            prop.setProperty("mail.smtp.host", "smtp.126.com");
            prop.setProperty("mail.smtp.auth", "true");
            prop.setProperty("mail.transport.protocol", "smtp");

            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            prop.put("mail.smtp.ssl.enable", "true");
            prop.put("mail.smtp.ssl.socketFactory", sf);

            prop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            prop.put("mail.smtp.socketFactory.fallback", "false");

            Session session = Session.getInstance(prop);
            session.setDebug(true);
            Transport ts = session.getTransport();

            ts.connect("smtp.126.com", "邮箱名", "授权码");

            String content = time;
            String title = DateUtils.getStrDate(startTime, DateUtils.DATE_FORMAT) + "区域平安每日新增变更汇总表";
            String toUser = changeSetService.findByNamedParam(null).getEMail();

            //导出excel
            ByteArrayInputStream inputStream = iss;
            Message message = createAttachMailXlsx(session, title, content, toUser, inputStream, ".xlsx");
            ts.sendMessage(message, message.getAllRecipients());
            ts.close();

            logger.info("---区域平安每日新增变更汇总表---邮件发送成功---");

        } catch (Exception e) {
            System.out.println(e.getMessage());
            logger.info("--区域平安每日新增变更汇总表--邮件发送成功--");
        }
    }

    public static MimeMessage createAttachMailXlsx(Session session, String title, String content, String toUser, ByteArrayInputStream iss, String suffix) throws MessagingException, IOException {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("发件人邮箱名"));
        List<String> list = JSON.parseArray(toUser, String.class);
        //一个收件人
        InternetAddress[] sendTo = InternetAddress.parse(String.valueOf(list.get(0)));
        message.setRecipients(MimeMessage.RecipientType.TO, sendTo);
        list.remove(list.get(0));
        //多个抄送人,这里特别注意一下,直接list循环是不能抄送多个收件人的
        Address[] address = new InternetAddress[list.size()];
        for (int i = 0; i < list.size(); i++) {
            address[i] = new InternetAddress(list.get(i));
        }
        message.setRecipients(Message.RecipientType.CC, address);

        message.setSubject(title);
        message.setSentDate(new Date());

        MimeBodyPart bodyPart = new MimeBodyPart();
        bodyPart.setContent(content, "text/html;charset=UTF-8");

        MimeBodyPart attachPart = new MimeBodyPart();
        /*************3.文件流*************/
        DataSource dataSource = new ByteArrayDataSource(iss, "application/excel");
        DataHandler dataHandler = new DataHandler(dataSource);
        attachPart.setDataHandler(dataHandler);
        //解决execl名中文乱码
        attachPart.setFileName(MimeUtility.encodeText(title) + suffix);

        MimeMultipart multipart = new MimeMultipart();
        multipart.addBodyPart(bodyPart);
        multipart.addBodyPart(attachPart);
        multipart.setSubType("mixed");

        message.setContent(multipart);

        return message;
    }

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该工具为个人整理修改的常用工具类,maven结构,Java语言编写详细依赖间pom文件,如有冲突自行修改, 包括条形码操作工具、二维码操作、图片验证码工具、动态密码工具、雪花算法id工具、签名工具、poi导出、json转换、文件操作、分页、日期处理、jdbc、大数运算及格式化、gzip压缩、http 结构说明如下: datasourceconfig:多数据源使用配置包 对数据源配置.txt:配置说明文件 function:功能代码及工具类 delayqueue:java自带延迟对了使用包 DelayMsg:延迟消息实体 DelayMsgHandler:延迟消息处理工具 paramvalid:空参检查包 CommonUtil:空参检查工具类 ParamNotNull:参数注解 RegistParam:参数实体 RequestMsg:公共参数实体 pdf:pdf导出工具包,包含4个导出工具类,具体使用根据导出结果确定 websocket:服务端websockt配置包,比较简单,具体使用需自行扩充 ActiveMqUtil:ActiveMq操作工具类 BarCodeUtil:条形码操作工具类,包括生成和读取 CorsConfig:服务端防止跨域请求公共设置 DateUtil:时间处理工具类 DBConnection:jdbc工具类 FileOperater:文件处理工具类 包括 读取文本文件,写出文本文件, 大文件切分,文件下载,文件文件夹比较,文件文件夹遍历筛选 ...... HttpClientCard:http工具类 HttpUtil:http工具类 Identification:id生成工具类,包括 UUID luhn算法id(适用于有序的流水号码) ImgUtil:图片相似度计算工具 ItvJsonUtil:基于fastjson的json工具类 JsonUtility:基于jackjson的接送工具类 MailUtil:邮件工具类,包括发送纯文本邮件,带(1个/多个)附件的邮件, 群发邮件 NumberUtil:数字操作工具 包括精准数字运算,数据格式化 PageUtil:分页工具类, POIUtil:poi工具类,excel导出 QrCodeUtil:二维码操作工具, 包括生成和读取 ShellUtil:shell命令操作工具,包括linux登陆,命令执行...... 较为简单,具体需要自行扩充 SignUtil:签名工具,包括MD5 位运算 AES BASE64 SnowflakeIdWorker:ID生成工具 雪花算法 SocketUtil:socket测试工具 TotpAuthUtil:动态密码工具 包括生成和校验 VerifyCodeUtil:图片验证码生成工具 ZipUtils:gzip压缩工具
以下是使用Java导出Excel并合并单元格的示例代码: ```java import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFFont; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelExportDemo { public static void main(String[] args) throws Exception { // 创建工作簿 Workbook workbook = new XSSFWorkbook(); // 创建工作表 XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet1"); // 创建单元格样式 XSSFCellStyle style = (XSSFCellStyle) workbook.createCellStyle(); // 设置单元格对齐方式 style.setAlignment(HorizontalAlignment.CENTER); style.setVerticalAlignment(VerticalAlignment.CENTER); // 创建字体 XSSFFont font = (XSSFFont) workbook.createFont(); font.setFontName("宋体"); font.setFontHeightInPoints((short) 14); font.setBold(true); // 设置字体颜色 font.setColor(IndexedColors.BLACK.getIndex()); // 将字体应用到单元格样式 style.setFont(font); // 创建单元格合并区域 CellRangeAddress region = new CellRangeAddress(0, 0, 0, 3); // 将单元格合并到工作表 sheet.addMergedRegion(region); // 创建表头行 List<String> headers = new ArrayList<>(); headers.add("序号"); headers.add("姓名"); headers.add("年龄"); headers.add("性别"); // 创建表头单元格 for (int i = 0; i < headers.size(); i++) { sheet.createRow(1).createCell(i).setCellValue(headers.get(i)); } // 写入数据 for (int i = 0; i < 10; i++) { sheet.createRow(i + 2).createCell(0).setCellValue(i + 1); sheet.getRow(i + 2).createCell(1).setCellValue("张三" + i); sheet.getRow(i + 2).createCell(2).setCellValue(20 + i); sheet.getRow(i + 2).createCell(3).setCellValue("男"); } // 设置表头样式 for (int i = 0; i < headers.size(); i++) { sheet.getRow(1).getCell(i).setCellStyle(style); } // 设置列宽 for (int i = 0; i < headers.size(); i++) { sheet.setColumnWidth(i, 20 * 256); } // 输出Excel文件 FileOutputStream outputStream = new FileOutputStream("test.xlsx"); workbook.write(outputStream); outputStream.close(); workbook.close(); } } ``` 这段代码将创建一个名为“Sheet1”的Excel工作表,并在第一行合并四个单元格,作为表头。然后,它将在第二行创建表头单元格,并在第三行及以下写入数据。最后,将输出Excel文件“test.xlsx”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值