Html mailto:链接和网络邮件

Html mailto:链接和网络邮件,html,Html,有没有一种方法可以实现与webmail客户端一起工作的mailto:link 编辑-所以传统的mailto链接(正如我所怀疑的)不起作用。那么,有没有人看到过类似于你在许多最流行的网站上看到的rss按钮的东西?这些链接由用户的浏览器处理。GMail有一个客户端安装(GMail通知程序),允许您指定希望GMail处理所有邮件链接 但是网页没有办法指定它的mailto链接应该由一个webmail应用程序处理(即使它可以,你怎么知道是哪一个?)。我只是在这里进行头脑风暴。您可以将Javascript处

有没有一种方法可以实现与webmail客户端一起工作的mailto:link


编辑-所以传统的mailto链接(正如我所怀疑的)不起作用。那么,有没有人看到过类似于你在许多最流行的网站上看到的rss按钮的东西?

这些链接由用户的浏览器处理。GMail有一个客户端安装(GMail通知程序),允许您指定希望GMail处理所有邮件链接


但是网页没有办法指定它的mailto链接应该由一个webmail应用程序处理(即使它可以,你怎么知道是哪一个?)。

我只是在这里进行头脑风暴。您可以将Javascript处理程序附加到询问用户是否要登录到webmail帐户的链接(以及提供程序列表)。如果您拥有Web邮件提供程序的正确URL,则可以根据用户的选择调用它们。如果用户回答“否”,则从处理程序返回true,并且该链接可能会正常工作


例如,请参见和

这实际上更像是一个web客户端问题,Firefox已经可以使用它了:


但最终还是由用户决定浏览器如何处理邮件链接。

假设,假设webmail客户端通过身份验证过程传递参数(或者用户已经通过身份验证),我不明白为什么这是不可能的。这不能用简单的mailto:方式来完成,但是可以提供一系列流行的webmail服务的链接,并使用Javascript拦截对mailto:链接的点击,这样用户就可以看到一个可能的webmail服务(或其本地电子邮件客户端)的下拉列表。这些链接将带有收件人:/Subject:address,但以webmail服务所需的任何结构形成。

以下是两个Opera UserJS示例,您可以查看这些示例,了解如何在常规页面上执行此操作。(显然,特定于UserJS的函数在常规页面中不起作用,但可以使用常规事件。)

例如,这一个可以捕获mailto链接的左键点击,并在Gmail中打开它们。它还可以处理表单

这一个捕获所有mailto操作,具有更通用的解析器(支持任何hname,而不仅仅是to、cc、bcc、subject和body),并具有更好的格式字符串语法:

基本上,您必须找到一种拦截邮件链接操作的方法。您可以通过单击链接上的事件侦听器和表单上的提交侦听器(如果您真的想支持表单)来实现这一点。(在整个窗口上使用click事件侦听器并对其进行筛选以查找mailto操作更容易。这样,您可以捕获在任意时间动态添加的mailto链接。)

或者,您可以只运行页面并处理所有mailto链接

但是,如果您想通过window.open或document.location等截获地址字段中的mailto操作,则需要HTML5的registerProtocolHandler或Opera的webmailprovider.ini支持。您可以在Firefox中使用registerProtocolHandler,但默认情况下,它仅限于您设置它的域

因此,基本上,您可以预先将mailto链接转换为http(s)webmail compose uri,或者在调用mailto操作时进行转换。后者效果更好

将mailto链接转换为webmail compose URI需要做一些事情。首先,您需要知道webmail接受哪些查询字符串变量。然后,您需要解析mailto URI,将其拆分为所需的部分。然后,您需要对这些部分进行解码和重新编码(以规范化)。然后,您需要将多个出现的hValue连接在一起。而且,您需要以不区分大小写的方式处理问题,并检查和转义不安全字符和%HH等

对于解析,您可以快速地执行脏正则表达式,但是使用完整的mailto-URI解析器和规范化函数可以获得更好的结果


所以,如果你只想处理左键点击链接,你可以跨浏览器。除此之外,您还必须使用特定浏览器提供的任何挂钩。

如果您使用的是Google Apps电子邮件帐户(托管电子邮件),Gmail Notifier将无法工作。不过,您可以使用bookmarklet将所有mailto:links更改为指向您的网络邮件的链接

这是我写的一个书签,它将以红色突出显示所有固定链接

javascript:for(var i=0;i<document.links.length;i++){var a=document.links[i];if(a.href.indexOf('mailto:')==0){a.href='http://mail.google.com/a/sample.com/mail?extsrc=mailto&url='+a.href;a.style.backgroundColor='red';a.style.color='white'}};return true;

javascript:for(var i=0;i有点像一个老线程,但是还没有人完全回答它,所以这里开始

正如blesh在上文中所说,虽然没有办法获得“mailto:”转到Gmail,但有另一种方法可以剥下这只猫的皮,这种方法在很多情况下都能正常工作。只需更改URL。删除“mailto:”前缀并插入https://mail.google.com/mail/?view=cm&fs=1&tf=1&to=“

无论用户是否通过谷歌应用程序登录,这似乎很有魅力。如果用户未登录,他将被引导完成这一步骤,然后Gmail仍会发出新消息。我注意到的唯一缺点是,如果(何时?)谷歌决定改变他们的书签方案,这可能需要一些调整


根据您的情况,在URL进入DOM之前或之后执行此转换可能是有意义的。

创建一个名为MailtoWebMail.reg的文本文件,其中包含以下内容…

Windows注册表编辑器5.00版

[HKEY\U LOCAL\U MACHINE\SOFTWARE\Classes\mailto\shell\open\command]

@=“\”(浏览器可执行文件)\“(参数)”

其中(BrowserExecutable)被替换为浏览器的完整路径(即C:\Program Files\Internet Explorer\iexplore.exe) 和(参数)替换为邮件服务的相应行,如下所述…

GMail "http://mail.google.com/mail/?view=cm&fs=1&to=%1"

Hotmail "http://hotmail.ms