通过邮箱发送html报表
前言
需求是发送邮件时, 可以将报表正文贴到邮件里, 可以正常复制选中报表内容.
目前的做法是简单粗暴的转成了一张图片, 这样效果显然是很糟糕的.
今天看到邮箱里可以预览Word, Excel, F12看了下, 他是在一个新的tab里打开,
里面嵌入了一个iframe, 然后调用了永中的dcs做在线预览. 那么报表是不是可以直接输出html到正文, 调用远程css呢.

尝试一: 外置css, js
把报表html中的js, css都改成cdn的地址, 直接单页访问html, 显示正常.
但是插入邮箱正文, 接受方打开邮箱后无法引用css, 报错跨域. 应该是邮箱那边做了限制. 禁止邮件正文引用外部js, css.
尝试二: 内嵌css, js, 直接通过邮箱发送
将finereport.css复制出来, 直接内嵌到html中.
<style type="text/css">
h1{color:red}
p{color:blue}
......
</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发送邮件, 这次正常了. 应该就是大小影响了.

通过邮箱发送html报表的更多相关文章
- Linux配置邮箱发送(MUTT/MSMTPQ)
配置邮箱发送 http://www.ilanni.com/?p=10589
- java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例
研究了近一天的时间,通过查阅相关资料,终于对java发送邮件的机制,原理有了一点点的理解,希望能够帮到大家! 1.首先要向你的项目里导入1个jar包:mail-1.4.4.jar即可(实现qq和163 ...
- spring 实现邮箱发送
使用spring mail 实现的邮箱发送功能,包括附件的发送(附件发送要保证附件存在的路径是真实),使用maven集成jar包,通过spring mvc 实现前后台的调用,发送方使用的是163邮箱, ...
- java邮箱发送
一.为何要使用邮箱发送 相信大家在日常工作生活中少不了和邮件打交道,比如我们会用邮件进行信息交流,向上级汇报日常工作:邮件发送的原理是什么?邮件是如何发送的呢?本系列教程将会讲解邮件如何申请可用jav ...
- JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)
JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...
- qq邮箱发送,mail from address must be same as authorization user
由于邮箱发送的邮箱账号更换,所以重新测试.结果一直出错,要不就是请求超时,要不就是未授权. 用smtp 开始的时候,端口使用495,结果是请求超时. 后来改成25,结果是未授权. 再后来听人说,有一个 ...
- Java邮箱发送——企业版
企业版邮箱发送工具类 import java.security.Security; import java.util.Properties; import javax.mail.Authenticat ...
- SpringBoot中快速实现邮箱发送
前言 在许多企业级项目中,需要用到邮件发送的功能,如: 注册用户时需要邮箱发送验证 用户生日时发送邮件通知祝贺 发送邮件给用户等 创建工程导入依赖 <!-- 邮箱发送依赖 --> < ...
- Spring Boot 整合Spring Data以及rabbitmq,thymeleaf,向qq邮箱发送信息
首先得将自己的qq开启qq邮箱的POP3/SMTP服务 说明: p,e为路由key. 用户系统完成登录的时候,将{手机号-时间-IP}保存到队列Phone-queue中,msg-sys系统获得消息打印 ...
随机推荐
- Windows 编程,程序编译使用的命令行工具。
Windows 编程,程序编译使用的命令行工具. 1.cl.exe文件是Visual C\C++的编译器,它将程序源代码文件编译为obj文件. 2.rc.exe文件是资源编译器.工程项目中的.rc文件 ...
- Leetcode题解(20)
59. Spiral Matrix II 题目 这道题copy网上的代码 class Solution { private: ][]; ][]; public: void dfs(int dep, v ...
- Hdu 1698(线段树 区间修改 区间查询)
In the game of DotA, Pudge's meat hook is actually the most horrible thing for most of the heroes. T ...
- Description has only two Sentences(欧拉定理 +快速幂+分解质因数)
Description has only two Sentences Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- 暑假练习赛 006 B Bear and Prime 100
Bear and Prime 100Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:262144KB ...
- 2017上海QCon之旅总结(下)
本来这个公众号的交流消息中间件相关的技术的.十月去上海参加了QCon,第一次参加这样的技术会议,感受挺多的,所以整理一下自己的一些想法接公众号和大家交流一下. 三天的内容还挺多的,之前已经有上篇和中篇 ...
- 【G彩娱乐网】作为一名程序员,我应该如何选购一台电脑?
G彩娱乐网说到程序员专用电脑,那肯定是苹果电脑.优点有很多,比如白平衡特别准.酷炫的黑科技.特别方便的软件等显而易见的优势:也有能够增加提案通过率.专注工作提高工作效率这样的玄学buff. 但是!并不 ...
- 全球领先的redis客户端:SFedis
零.背景 这个客户端起源于我们一个系统的生产问题. 一.问题的发生 在我们的生产环境上发生了两次redis服务端连接数达到上限(我们配置的单节点连接数上限为8000)导致无法创建连接的情况.由于这个系 ...
- 零基础如何迅速学习HTML5?新手小白学习web前端H5自白!
很多的人在毕业之后才发现原来学的专业不是自己想做的工作,或者专业对口的工作待遇让人觉得并不满意,于是很多人选择培训机构学新的一门技能转换行业.IT行业的web前端H5受到很多学员的青睐.那么学习web ...
- 数据库中float类型字段,转化到前端显示,统一保留两位小数
客户的一个需求,mybatis查询到的数据库的数据进行转换,采用TypeHandler<T>的方式.float保留两位精度可以采用DecimalFormat 直接贴上最终的解决代码(事情没 ...