springcloud client poi mail

使用其他服务发送email

application.yml

---
#email setting
spring:
  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串的形式发送过去,然后再解压

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值