检测基于web的邮件客户端与本地邮件客户端的mailto链接
Detecting web-based mail client vs local mail client for a mailto link
我有一个web应用程序,用户可以使用mailto链接发送电子邮件。基本上,我连接了一个包含主题、正文和收件人的字符串,然后代码触发一个mailto,有点像这样:
var MailToLink = 'mailto:' + TheEmailString;
window.open(MailToLink, '_blank'); //option 1
window.open(MailToLink); //option 2
最初,我只有选项2,因为我的开发机器上有Outlook。但当我开始进行alpha测试时,另一个用户正在使用Gmail, mailto链接将在与我的应用程序相同的窗口中打开,因此我将代码更改为选项2,以便电子邮件在另一个窗口中打开。现在的问题是,当用户打开Outlook时,该链接将打开Outlook消息和一个新的空白窗口。
是否有一种方法来检测用户是使用基于web的电子邮件客户端还是本地客户端?我想这样做:
if (IsUsingWebMailClient) {
window.open(MailToLink, '_blank');
} else {
window.open(MailToLink);
}
我不确定这是否可能;如何使用JavaScript检测mailto客户端?
这是一个有点hack,但这工作。超时时间可能会有所不同,您可以使用更多或更少的毫秒进行测试。
<html>
<head>
<script type="text/javascript">
function mailTo(address){
var windowRef = window.open('mailto:'+address, '_blank');
var body = windowRef.document.getElementsByTagName('body')
if(!body.lenth) setTimeout(windowRef.close,300)
}
</script>
</head>
<body>
<input type="button" value="send email" onclick="mailTo('email@gmail.com')" >
</body>
</html>
相关文章:
- 客户端服务器REST API captcha实现
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 如何将我的javascript库公开给其他客户端使用
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 返回/从Twit's客户端.get
- 将客户端特定的日期格式返回到服务器MVC4
- MobileFirst:在客户端运行计时器作业-最佳选项
- 标签客户端的设置值
- 我的客户端选项是什么
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 使用javascript在客户端上使用Web服务
- 当没有电子邮件客户端时,“mailto:”会做什么
- Mailto - catch用户没有电子邮件客户端设置
- 检测基于web的邮件客户端与本地邮件客户端的mailto链接
- 逃跑&用于在邮件客户端中显示(mailto链接)