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

Detecting web-based mail client vs local mail client for a mailto link

本文关键字:客户端 mailto 链接 检测 web      更新时间:2023-09-26

我有一个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>