通过邮箱发送html报表

前言

需求是发送邮件时, 可以将报表正文贴到邮件里, 可以正常复制选中报表内容.

目前的做法是简单粗暴的转成了一张图片, 这样效果显然是很糟糕的.

今天看到邮箱里可以预览Word, Excel, F12看了下, 他是在一个新的tab里打开,

里面嵌入了一个iframe, 然后调用了永中的dcs做在线预览. 那么报表是不是可以直接输出html到正文, 调用远程css呢.

尝试一: 外置css, js

把报表html中的js, css都改成cdn的地址, 直接单页访问html, 显示正常.

但是插入邮箱正文, 接受方打开邮箱后无法引用css, 报错跨域. 应该是邮箱那边做了限制. 禁止邮件正文引用外部js, css.

尝试二: 内嵌css, js, 直接通过邮箱发送

将finereport.css复制出来, 直接内嵌到html中.

1 <style type="text/css">  
2 h1{color:red}  
3 p{color:blue}  
4 ......
5 </style>  

复制html内容, 粘贴到qq邮箱正文, 选择html编辑内容, 发送成功.

尝试三: 通过javax.mail发送html邮件

通过代码发送上述相同的html邮件, 邮件发送成功, 但是接受方收到的邮件是空的, 只显示了一个<.

试了下简单的html, 可以正常发送接受, 收到的也是富文本格式的.

那么猜测是邮箱服务器限制了html的大小, 毕竟直接简单粗暴的把一个报表转成html, 内容会比较庞大.

我们案例中用的html体积大概350KB, 可能是因为这个导致通过api发送邮件被bang掉了. 

尝试四: 精简html大小

简化了下模板, 只留了两个单元格. 简化了下80多KB的finereport.css, 删掉了控件, 菜单, 图表等一堆css. 

得到一个30KB的html, 再次通过javax.mail发送邮件, 这次正常了. 应该就是大小影响了.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏性能与架构

如何管理linux开机自启服务?

自启动服务非常重要,例如 (1)需要手动添加希望自启的服务,如安装svn后没有自动添加,就需要我们手动加入 (2)安装某些程序后,自动加到自启动了,但我们...

30611
来自专栏学海无涯

iOS开发之使用Git的基本使用(二)

通过前文iOS开发之使用Git的基本使用(一)的学习,相信大家对如何将iOS项目通过Git传到GitHub账户上有了一个基本的了解,其过程是相对繁琐和容易出错的...

712
来自专栏Java面试笔试题

在VMware上安装CentOS版本的Linux虚拟机

2.点击“编辑虚拟机设置”,选择“CD/DVD”,点击"使用ISO映像文件"在本地找到合适的镜像文件;

1562
来自专栏吴柯的运维笔记

【基础】使用VMware Workstation搭建服务器模拟环境

VMware12 下载地址链接:链接:https://pan.baidu.com/s/1NCdOQf8f40JhG5HzVjilew 密码:ukaf

3602
来自专栏吴柯的运维笔记

Linux系统日志管理常用的工具和指令

前言 日志对于安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过它来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。 日志主要的功能有:...

71611
来自专栏编程微刊

自动调试自动编译五分钟上手

1837
来自专栏Java架构沉思录

一文读懂 HTTP 2.0 之服务器推送

原文:http://www.ruanyifeng.com/blog/2018/03/http2_server_push.html

1121
来自专栏mukekeheart的iOS之旅

《从零开始做一个MEAN全栈项目》(4)

欢迎关注本人的微信公众号“前端小填填”,专注前端技术的基础和项目开发的学习。  在上一篇中,我们讲了如何去构建第一个Express项目,总结起来就是使用两个核心...

2956
来自专栏SpringBoot 核心技术

第二十二章:SpringBoot项目多模块运用与设计

4314
来自专栏JavaEdge

Maven环境隔离解决的问题配置及原理目录初始化编译打包命令验证

解决的问题 避免人工修改的弊端,即容易犯错 轻松分环境编译,打包,部署 配置及原理 在pom.xml中增加build节点 ? 在pom.xml中增加pro...

4286

扫码关注云+社区

领取腾讯云代金券