检测基于Web的邮件客户端与本地邮件客户端的mailto链接

时间:2015-08-05 15:57:42

标签: javascript email mailto

我有一个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客户端?

1 个答案:

答案 0 :(得分:0)

它有点像 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>