需求:

今天同事问我一个需求,就是如果用html的mailto scheme,能否当其点击后弹出的outlook中,其内容正文部分是一个带有html的样式或格式的?

真是这样的么?因为10年前当刚接触到ActiveX控件时候,讲到ActiveX控件的强大之处甚至可以操作注册表,那么它应该也能对于在注册表中注册的邮件客户端应用做一些高级功能的定制吧,然后我很轻易就实践出来了。

实践:

我们很简单,先创建一个html页面,上面有一个超级链接'Share this link",当点击这个链接时候,会打开Outlook的客户端然后把一些相关的内容填写进去,特别是邮件正文部分必须有样式(比如就简单设置下文字颜色)

附上代码:

我们先写一段js:

/*

* Demo:使用mailto scheme 发送带有html样式的内容作为邮件内容

*/

function SendMail(subject,toName, ccName, bccName ) {

//以下2行复制自:http://msdn.microsoft.com/en-us/library/office/aa210897(v=office.11).aspx

//创建一个ActiveX控件对象让其对应Outlook应用

var outlookApp = new ActiveXObject("Outlook.Application");

//MAPI是“消息传递应用程序接口”,如果双方应用程序都启用“MAPI”,就可以相互共享邮件信息

var nameSpace = outlookApp.getNameSpace("MAPI");

//开始构造outlook的邮件项

var mailItem = outlookApp.CreateItem(0);

//设置邮件主题

mailItem.Subject = subject;

//设置邮件to列表

mailItem.To = toName;

//设置邮件cc列表

mailItem.Cc= ccName;

//设置邮件的bcc列表

mailItem.Bcc=bccName;

//这里特别注意了,这里的mailBody是一个可以带html样式的body

var mailBody= "

This is the email body with html style";

//设置邮件的内容为html内容

mailItem.HTMLBody = mailBody;

//显示邮件

mailItem.Display(0);

//重置资源

mailItem = null;

nameSpace = null;

outlookApp = null;

}

然后页面上调用我们的这个方法来用mailto sheme:

测试:

假设这个页面叫testmailto.html ,当我们要在IE浏览器中测试它的时候的时候,首先必须让浏览器启用ActiveX控件的支持:

之后,它会出现这个超级链接Share this link。如果点击它,则会显示如下,提醒你ActiveX控件因为太强大而可能不安全,问你是否允许交互:

选择"Yes"后,可以发现Outlook客户端被打开,除了填写上去的一般信息(Subject,to,cc,bcc)以外,最重要的是, body 部分不再是素文本,而是带有样式的文本。

这正是我们所需要的。

结论:

所以直接用mailto scheme,是不可能创建带有样式文本的邮件内容的的,但是我们可以用 ActiveX控件轻易的击穿它,但是因为ActiveX只有IE支持,而且带有安全隐患。

比如在Firefox中运行相同的例子,则会报以下的错误:

所以我还得继续研究,看下别的浏览器如何去实现这个相同的需求。

html 弹出一个邮件连接,mailto scheme 高级用法, 显示带html样式的邮件文本相关推荐

  1. html点击按钮弹出悬浮窗_9种实现点击一个链接弹出一个小窗口的代码

    9 种实现点击一个链接弹出一个小窗口的代码 因为着是一段 javascripts 代码, 所以它们应该放在之间. 是对一些版本低的浏览器起作用,在这些老浏览器中不会将 标签中的代码作为文本显示出来.要 ...

  2. %matplotlib inline是jupyter notebook里的命令, 意思是将那些用matplotlib绘制的图显示在页面里而不是弹出一个窗口

    %matplotlib inline是jupyter notebook里的命令, 意思是将那些用matplotlib绘制的图显示在页面里而不是弹出一个窗口 终端输入jupyter notebook,  ...

  3. 点击文字弹出一个DIV层窗口代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  4. ASP.NET弹出一个对话框

    我们在ASP.NET程序的开发过程中,常常需要向用户给出提示信息,比如是否"操作成功","确定"还是"取消"操作.         (1) ...

  5. 用MPLAB IDE编程时,软件总是弹出一个窗口提示: “the extended cpu mode configuration bit is enabled,but the program that

    用MPLAB IDE编程时,软件总是弹出一个窗口提示: "the extended cpu mode configuration bit is enabled,but the program ...

  6. ASP.NET查询页面设置form的action属性只弹出一个页面,并且每次将页面设置到最前...

    背景 当数据量大.查询条件复杂,多样多的时候,我们可能需要单独做一个查询界面,当用户选择设置了相关的查询条件后,点击[查询]按钮,系统就弹出一个新的页面展示出根据条件查询出的数据集. 然后,用户每点[ ...

  7. 【CSS实现Loading遮罩】点击按钮,弹出一个DIV层窗口

    加载中 gif 图片: 页面效果: 源码 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...

  8. 如何让Element UI的Message消息提示每次只弹出一个

    Element UI的Message消息提示是点击一次触发一次的.在开发的时候经常会作为一些校验提示,但是公司的测试人员在进行测试时会一直点,然后就会出现如下图的情况.虽然客户使用的时候一般来说不会出 ...

  9. qt自定义按钮类,每个按钮自带一个右键弹出框,如何使同一时刻只显示一个弹出框

    提要 继承于QPushButton的自定义按钮类,其右键弹出一个弹框,创建多个这样的自定义按钮在窗口中,每一时刻只显示一个右键弹出框,避免同一时刻,多个按钮右键弹出弹出框后,未及时关闭弹出框导致的同一 ...

最新文章

  1. 基于StringTemplate的视图
  2. Oracle 常用SQL技巧收藏
  3. Linux环境软RAID 5 搭建
  4. 君正T20平台生成jffs2格式rootfs
  5. 寒冰王座(完全背包+多解)
  6. MySQL为什么要set names
  7. Maven依赖的Scope去除部署不需要的jar 包(打包)
  8. app.use(express.static)设置静态文件目录小解
  9. javascript:控制一个元素高度始终等于浏览器高度
  10. 微服务2.0时代,论其痛点与触点
  11. 计算机体系结构及组成原理
  12. ensp的p2p网络与虚拟专线实验
  13. B编码以及BT种子文件分析
  14. taskmgr跟着敲
  15. 红米k40关闭广告方法分享(图文)
  16. Android SurfaceFlinger SW Vsync模型
  17. 异常检测(Anomaly Detection)综述
  18. 【大学生软件测试基础】三角形构成问题 - 决策表
  19. 如何在mmdetection3d下批量的预测单目3d检测结果并保存
  20. Kconfig 学习

热门文章

  1. 屌丝逆袭,通过相亲实现阶层跃迁的秘诀
  2. 1.2w 星!火爆 GitHub 的 Python 学习 100 天
  3. Python创建mat文件,打开mat文件
  4. 自然语言处理项目之文档主题分类
  5. 珠江三角洲 芯片恩仇录
  6. 刘强东卸任!“二号位”徐雷:从摇滚青年到掌舵京东
  7. 被冬奥会种草的,不止各国羽绒服
  8. “我不看春晚,但想要张小斐同款”
  9. 原好未来CFO罗戎加盟百度 出任百度集团CFO
  10. 钉钉用户数破5亿 低代码应用数8个月增长86万