有没有办法实现与webmail客户端一起使用的mailto:link?
编辑 - 所以传统的mailto链接(我怀疑)无法正常工作。那么有没有人看到过与你在各种最受欢迎的网站上看到的rss按钮类似的东西?
答案 0 :(得分:19)
链接由用户的浏览器处理。 GMail有一个客户端安装(GMail Notifier),允许您指定您希望GMail处理所有mailto链接。
但是网页无法指定它的mailto链接应该由webmail应用程序处理(即使它可以,你怎么知道哪一个?)。
答案 1 :(得分:5)
这真的是一个Web客户端问题,它已经可用于Firefox:
http://starkravingfinkle.org/blog/2008/04/firefox-3-web-protocol-handlers/
但最终由用户决定他们的浏览器如何处理mailto链接。
答案 2 :(得分:5)
使用以下内容创建名为MailtoWebMail.reg的文本文件...
Windows注册表编辑器版本5.00
[HKEY_LOCAL_MACHINE \ SOFTWARE \类\的mailto \壳\开放\命令]
@ =“\”(BrowserExecutable)\“(参数)”
其中(BrowserExecutable)替换为浏览器的完整路径(即C:\ Program Files \ Internet Explorer \ iexplore.exe) 和(参数)将替换为邮件服务的相应行,如下所述......
<强>的GMail 强> “http://mail.google.com/mail/?view=cm&fs=1&to=%1”
<强>的Hotmail 强> “http://hotmail.msn.com/cgi-bin/compose?To=%1&mailto=1”
Yahoo Mail “http://compose.mail.yahoo.com/?To=%1”
Netscape Mail “http://webmail.netscape.com/compose.adp?mailto=%1”
<强> Mail.com 强> “http://mail01.mail.com/scripts/mail/Outblaze.mail?composeto=%1&compose=1”
Opera Web Mail “http://mymail.operamail.com/scripts/mail/Outblaze.mail?compose=1&did=1&a=1&to=%1”
注意:[HKEY_LOCAL_MACHINE]行之后不应该有空行
MikeB
答案 3 :(得分:2)
我只是在这里集思广益。您可以将Javascript处理程序附加到链接,该链接询问用户他/她是否想要登录到webmail帐户(以及提供者列表)。如果您拥有Webmail提供程序的正确URL,则可以根据用户的选择调用它们。如果用户回答“否”,则从处理程序返回true,并且可能链接将正常工作。
例如,请参阅http://toric.blogspot.com/2005/07/gmail-compose-link.html和http://blog.monstuff.com/archives/000238.html
答案 4 :(得分:1)
以下是2个Opera UserJS示例,您可以检查这些示例,以便了解如何在常规页面上执行此操作。 (显然,UserJS特定的功能在常规页面中不起作用,但您可以使用常规事件。)
这个会抓住mailto链接的左键单击并在Gmail中打开它们。它也可以处理表格。
http://shadow2531.com/opera/userjs/BeforeMailtoURL.js
这个捕获所有mailto动作,有一个更通用的解析器(支持任何hname而不仅仅是,cc,bcc,subject和body)并且具有更好的格式字符串语法:
http://shadow2531.com/opera/userjs/BeforeMailtoURL.zip
基本上,您必须找到拦截mailto链接操作的方法。您可以在链接上单击事件侦听器并在表单上提交侦听器(如果您确实要支持表单)。 (在整个窗口上使用单击事件侦听器更容易,只需对其进行过滤即可查找mailto操作。这样,您可以捕获在任意时间动态添加的mailto链接。)
或者,您可以浏览该页面并处理所有mailto链接。
但是,如果你想通过window.open或document.location等拦截地址字段中的mailto动作,你需要像HTML5的registerProtocolHandler或类似Opera的webmailprovider.ini支持。您可以在Firefox中使用registerProtocolHandler,但默认情况下,它仅限于您设置的域。
因此,基本上,您要么将mailto链接转换为http(s)webmail,请在前面或者在调用mailto操作时编写URI。后者效果更好。
将mailto链接转换为webmail撰写URI涉及一些事情。首先,您需要知道webmail接受的查询字符串变量。然后,您需要解析mailto URI以将其拆分为您想要的部分。然后,您需要解码并重新编码(以规范化)这些部分。然后,您需要将多次出现的hvalue连接在一起。并且,您需要以不区分大小写的方式处理事务并检查并转义不安全的字符和%HH等。
对于解析,你可以做一个快速而脏的正则表达式,但是使用完整的mailto URI解析器和规范化函数你会得到更好的结果。
因此,如果您只想处理左键单击链接,则可以执行该跨浏览器。除此之外,您还必须使用特定浏览器为您提供的任何钩子。
答案 5 :(得分:0)
假设,假设webmail客户端通过身份验证过程传递参数(或者用户已经过身份验证),我不明白为什么这是不可能的。它不能用简单的mailto:方式来完成,但它可以提供一系列流行的webmail服务链接,并使用Javascript拦截mailto:links的点击,以便向用户显示下拉菜单可能的网络邮件服务列表(或其本地电子邮件客户端)。链接将带有To:/ Subject:地址,但是以webmail服务所需的任何结构形成。
答案 6 :(得分:0)
如果您使用的是Google Apps电子邮件帐户(托管电子邮件),则Gmail通知程序将无效。您可以使用书签,将所有mailto:链接更改为指向您的网络邮件的链接。
这是我写的一个书签,它将以红色突出显示所有固定链接。
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;
请务必将http://mail.google.com/a/sample.com更改为适合您的托管地址。
我想如果您只是更改该链接,这将适用于许多其他电子邮件客户端。
答案 7 :(得分:0)
有点旧线程,但是还没有人回答它,所以这里就是。
正如肉体上面几乎所说的那样,虽然没有办法让“mailto:”转到Gmail,但还有另一种方法可以让这只猫在许多情况下运行得很好。只需更改网址即可。删除“mailto:”前缀并插入“https://mail.google.com/mail/?view=cm&fs=1&tf=1&to=”。
无论用户是否通过Google Apps进入,这似乎都很有魅力。如果用户未登录,他将完成该步骤,然后Gmail仍会启动新消息。我注意到的唯一缺点是,如果(何时?)谷歌决定改变他们的书签方案,这可能需要一些调整。
根据您的具体情况,在URL在DOM之前或之后执行此转换可能是有意义的。
答案 8 :(得分:0)
哦,然后双击MailtoWebMail.reg将命令插入注册表。
MikeB
答案 9 :(得分:0)
有没有人看到数字表示有多少百分比的网络邮件用户使用插件等配置了系统,以便正确地将mailto:
个链接发送到他们的浏览器/网络邮件系统而不是桌面应用?这对于决定是否在网站或联系表单上使用mailto:
链接似乎至关重要,但我在编写数字时无法指导决策。