springcloud client poi mail

来源:互联网 发布:手机绘画的软件 编辑:程序博客网 时间:2024/06/05 12:44

使用其他服务发送email

application.yml

---#email settingspring:  mail:    protocol: smtp    default-encoding: UTF-8    properties:      mail:        debug: true        smtp:          auth: true          starttls:            enable: true            required: true          timeout: 25000          socketFactory:            class: javax.net.ssl.SSLSocketFactory

依赖:

<dependency>    <groupId>org.apache.poi</groupId>    <artifactId>poi</artifactId>    <version>3.15</version></dependency><dependency><groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-mail</artifactId></dependency>

客户端:

public static HSSFWorkbook getHSSFWorkbook(String name,List<Map<String, Object>> model, String[] headers){    HSSFWorkbook workbook=new HSSFWorkbook();    int rowNum=1;    HSSFSheet sheet = workbook.createSheet();    workbook.setSheetName(0, name);    sheet.createFreezePane(0, rowNum+1);    sheet.setColumnWidth(0, 4000);    sheet.setColumnWidth(1, 3500);    sheet.setColumnWidth(2, 6500);    sheet.setColumnWidth(3, 2000);    sheet.setColumnWidth(4, 3500);    sheet.setColumnWidth(5, 3500);    sheet.setColumnWidth(6, 3500);    sheet.setColumnWidth(7, 3500);    sheet.setColumnWidth(8, 6500);    HSSFRow row = sheet.createRow(rowNum);    sheet.setColumnWidth(2, 12 * 256);    sheet.setColumnWidth(3, 17 * 256);    HSSFCellStyle style = workbook.createCellStyle();    HSSFFont font = workbook.createFont();    font.setBold(true);    style.setAlignment(HSSFCellStyle.ALIGN_CENTER);    style.setFont(font);    HSSFRow headRow = sheet.createRow(0);    for (short i = 0; i < headers.length; i++)    {        HSSFCell cell = headRow.createCell(i);        cell.setCellStyle(style);        HSSFRichTextString text = new HSSFRichTextString(headers[i]);        cell.setCellValue(text);    }    int dataRow=1;    if (model==null||model.size()<=0)    {        return null;    }    for (Map<String, Object>map:model)    {        int cell=0;        map.forEach((x,y)->{            HSSFRow row2 = sheet.createRow(rowNum);            row2.createCell(cell).setCellValue(y.toString());        });    }    return workbook;}


HSSFWorkbook hssfWorkbook=getHSSFWorkbook();
ByteArrayOutputStream baos = new ByteArrayOutputStream();hssfWorkbook.write(baos);baos.flush();byte[] bt = baos.toByteArray();String data= Base64Util.startBase64(bt);

然后把data发送过去
服务端:
接收data,String类型

BASE64Decoder decoder = new BASE64Decoder();byte[] bytes =decoder.decodeBuffer(data);InputStream is = new ByteArrayInputStream(bytes, 0, bytes.length);

            JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();            /**设置配置信息,我们在application.yml中配置*/            Properties properties = new Properties();            properties.setProperty("mail.debug", "true");// 是否显示调试信息(可选)            properties.setProperty("mail.smtp.starttls.enable", "true");            properties.setProperty("mail.smtp.socketFactory.class",                    "javax.net.ssl.SSLSocketFactory");            properties.setProperty("mail.smtp.auth", "true");            properties.put(" mail.smtp.timeout ", " 25000 ");            javaMailSender.setJavaMailProperties(properties);            javaMailSender.setHost("smtp.163.com");            javaMailSender.setUsername("*****@163.com");            javaMailSender.setPassword("****");//授权码            //javaMailSender.setPort(25);            javaMailSender.setDefaultEncoding("UTF-8");                MimeMessage mimeMessage = javaMailSender.createMimeMessage();            mimeMessage.addHeader("charset", "UTF-8");            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);            helper.setFrom("****@163.com");            String []place=new String[]{"****@qq.com"};            helper.setTo(place);            helper.setSubject("主题");            helper.setText("正文");            mimeMessage.saveChanges();            DataSource source = new ByteArrayDataSource(is, "application/msexcel");//          FileSystemResource file1 = new FileSystemResource(new File("D:\\***.xlsx"));//          helper.addAttachment("***.xlsx", file1);
    /**为避免文件名乱码,测试得出当文件名长度大于20时,也会产生乱码*/
    String filename = MimeUtility.encodeText(attachName,"GBK","B");            filename = filename.replaceAll(" ","_").replaceAll("\r", "_").replaceAll("\n", "_");
helper.addAttachment(filename ,source);
javaMailSender.send(mimeMessage);

把附件转成经过BASE64为压缩后通过json串的形式发送过去,然后再解压

原创粉丝点击