前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过邮箱发送html报表

通过邮箱发送html报表

作者头像
用户1216491
发布2018-01-24 16:03:09
2.3K0
发布2018-01-24 16:03:09
举报
文章被收录于专栏:xdecodexdecode

前言

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

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

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

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

尝试一: 外置css, js

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

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

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

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

代码语言:javascript
复制
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发送邮件, 这次正常了. 应该就是大小影响了.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 尝试一: 外置css, js
      • 尝试二: 内嵌css, js, 直接通过邮箱发送
        • 尝试三: 通过javax.mail发送html邮件
          • 尝试四: 精简html大小
          相关产品与服务
          腾讯云 BI
          腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档