引入:
上sprint我们项目组用到了mailto sheme,在href中,我也有兴趣稍花了点时间研究了下。
实践:
如果页面中的链接用到了mailto sheme如下:
则当在页面中点击如下超级链接时:
它自动会打开OutLook 并且吧所有的我们href中内容都自动填入进去:
现在我们来研究这个mailto theme的机理:
很显然,根据我的学习习惯,会先去找RFC 中的说明,我们在如下页面找到了:
http://tools.ietf.org/html/rfc6068
快速阅读了一下,发现这段话讲解了http sheme和mailtosheme在页面上被点击后发生的事情:
可以看出:对于解析的url包含http sheme,则会引起客户端软件(浏览器)和交互服务器的立即交互,也就是说,当一个href为http://xxxx,时候,会立马找到浏览器并且发送请求url,于是这就是超级链接的本质。而对于mailto scheme,则会让客户端软件创建一个消息,吧mailto后面的url和参数依次填入,但是不会立马发送,而是等用户编辑完再发送。
而根据我的已有知识,当页面上点击http sheme时候,它启动的浏览器是你当前页面所在的浏览器,否则是从注册表中找到默认的浏览器。
按照类比的思路,我们可以断定,这个mailto sheme所触发的邮件客户端应该也是从注册表中找的。
而RFC的制定,所有的主流浏览器都必须遵守这些RFC 规范,所以所有浏览器中实验,其结果都是一样的。
我们看下注册表在HKEY_CLASSES_ROOT下:
这个command的默认值是:
所以,这里可以看出,我们的mailto标签会默认激活OUTLOOK.EXE,因为我们注册表中默认的是打开OUTLOOK.EXE
所以我们只要在自己的客户端机器上安装了其他电子邮件应用,比如outlook express或者Foxmail,并且在这里吧这个键值指向相应的可执行文件,就可以让mailto标签触发打开相应的邮件编辑器了。我昨晚在家实验了下,完全正确。
总结;
(1)mailto sheme是可以触发用户打开电子邮件客户端的sheme.
(2)具体打开哪个客户端,由注册表中的设定为准,你可以配置这个设定来让mailto触发打开不同的邮件客户端,如果你设置了一个错误的客户端执行文件路径或者乱填,那么这个mailto 被点击后什么都不触发。