当没有电子邮件客户端时,`mailto:`会做什么?

时间:2014-11-27 18:19:06

标签: javascript html email mailto

我正在开发一个网站。

如果没有电子邮件客户端(如Outlook,Thunderbird等),mailto:会打开什么? 它可以在我的计算机上运行,​​它有Outlook,但如果有人想要mailto:打开,比如说gmail.com,该怎么办?

我需要在mailto:声明中加入哪些内容才能实现?

5 个答案:

答案 0 :(得分:11)

作为Web开发人员,您无法控制用户选择打开其电子邮件的软件,因为它由该用户的Web浏览器设置或操作系统处理。如果用户的计算机上没有安装电子邮件程序,并且浏览器中没有为“mailto”链接定义操作,则不会发生任何事情。

答案 1 :(得分:5)

以下解决方案适合我:

(function($)) {
  $('a[href^=mailto]').each(function() {
    var href = $(this).attr('href');
    $(this).click(function() {
      var t;
      var self = $(this);

      $(window).blur(function() {
        // The browser apparently responded, so stop the timeout.
        clearTimeout(t);
      });

      t = setTimeout(function() {
        // The browser did not respond after 500ms, so open an alternative URL.
        document.location.href = '...';
      }, 500);
    });
  });
})(jQuery);

有关详细信息,请参阅:https://www.uncinc.nl/articles/dealing-with-mailto-links-if-no-mail-client-is-available

答案 2 :(得分:1)

我相信你可以用它。 https://mail.google.com/mail/?view=cm&fs=1&to=email@domain.com 但是,它确实存在缺陷,用户必须已经登录到gmail。希望这有帮助!

答案 3 :(得分:0)

完全取决于客户。操作系统为mailto:tel:等协议定义协议处理程序。

您需要访问客户端的注册表(如果是Windows系统)来操作协议处理程序的处理应用程序。

对于Outlook 2013作为指定的处理程序,相应的注册表结构如下所示:

[HKEY_CLASSES_ROOT\mailto]
@="URL:mailto"
"EditFlags"=hex:02,00,00,00
"URL Protocol"=""

[HKEY_CLASSES_ROOT\mailto\DefaultIcon]
@="C:\\PROGRA~2\\MICROS~1\\Office15\\OUTLOOK.EXE,-9403"

[HKEY_CLASSES_ROOT\mailto\shell]
@="open"

[HKEY_CLASSES_ROOT\mailto\shell\open]

[HKEY_CLASSES_ROOT\mailto\shell\open\command]
@="\"C:\\PROGRA~2\\MICROS~1\\Office15\\OUTLOOK.EXE\" -c IPM.Note /mailto \"%1\""

在HKCU下有相应的结构。

答案 4 :(得分:0)

mailto URI方案并未决定发生了什么 - 它只是指示您使用的浏览器执行其配置为发送电子邮件的任何内容(见the IETF proposed standard for more info)。因此,如果没有配置电子邮件客户端,您必须咨询浏览器本身以查看它的作用。

根据文档和我的个人经验,我没有看到任何手动设置操作的方法:某些浏览器可能有一些非标准语法,但这不太可能,因为这会打开能够通过点击执行任意命令(例如下载病毒或类似的东西)来解决巨大的潜在安全问题。