使用 javascript 的 mailto

IT技术 javascript html mailto
2021-03-18 23:54:43

我想在用户单击图像时打开一个带有“收件人地址”的新 Outlook 邮件模板。我已经在 html 页面中返回了我的代码(与图像链接),每当它加载时,javascript 应该打开一个新的邮件模板。但该功能不起作用。请让我知道我的代码有什么问题。

body onLoad="redirect()"

script language="JavaScript"

function redirect() 

      var email = "xyz@something.com"
      var mailto_link = 'mailto:' + email
      window = window.open(mailto_link, 'emailWindow')
      if (window && window.open && !window.closed)         
          window.close()
6个回答

不需要 jQuery。并且没有必要打开一个新窗口。不向浏览器返回 HTTP 数据的协议(mailto:, irc://, magnet:, ftp://(<- 这取决于它是如何实现的,通常浏览器有一个内置的 FTP 客户端))可以在同一窗口中查询而不会丢失当前内容。在你的情况下:

function redirect()
{
    window.location.href = "mailto:mail@example.org";
}
<body onload="javascript: redirect();">

或者直接

<body onload="javascript: window.location.href='mailto:mail@example.org';">
需要注意的是,浏览器还是会触发onbeforeunload-Event:window.onbeforeunload = () => {console.log("onbeforeunload")}; window.location.href = "mailto:mail@example.org";
2021-04-27 23:54:43
@cjm2671 我在当前最新的 Chrome 版本 76.0.3809.100 中在正常模式和隐身模式下测试了上述代码。一切正常。您是否有任何可能阻止代码执行的浏览器扩展程序 (AddOns)?
2021-04-30 23:54:43
@DB 感谢您指出这个有趣的细节!这是有道理的...我想,因为,就像我之前说的,浏览器可能有一个用于处理伪协议的内置工具,比如 ftp://。这确实会替换当前页面内容,因此即使浏览器中没有内置工具来处理 mailto:// URI,也会触发 onbeforeunload 事件。但这只是个人假设。在这种情况下,浏览器供应商应该首先检查他们是否支持伪协议,否则不会触发 onbeforeunload 事件。
2021-05-12 23:54:43

在 jsFiddle 中找到代码它使用 jQuery 来修改链接的 href。您可以在其位置使用任何其他库。它应该工作。

HTML

<a id="emailLnk" href="#">
    <img src="http://ssl.gstatic.com/gb/images/j_e6a6aca6.png">
</a>

JS

$(document).ready(function() {
    $("#emailLnk").attr('href',"mailto:xyz@something.com");
});​

更新

另一个代码示例,如果 id 仅在点击事件期间已知

$(document).ready(function() {
    $("#emailLnk").click(function()
     {
         window.location.href = "mailto:xyz@something.com";
     });
});​

使用 JavaScript,您可以使用以下内容“即时”创建链接:

var mail = document.createElement("a");
mail.href = "mailto:mail@example.org";
mail.click();

这由浏览器重定向到安装在机器上的某些邮件客户端,而不会丢失当前窗口的内容……而且您不需要任何像“jQuery”这样的 API。

window.open('mailto') 通常会在 URL 中打开一个带有 mailto 的空白选项卡,因此这种方式看起来更好
2021-04-29 23:54:43

我只是使用了这个 javascript 代码(使用 jquery 但它不是绝对必要的):

    $( "#button" ).on( "click", function(event) {
         $(this).attr('href', 'mailto:me@domain.com?subject=hello');
    });

当用户点击链接时,我们替换被点击元素的 href 属性。

注意不要阻止默认的comportment(event.preventDefault),我们必须放手去做,因为我们刚刚把href替换到哪里去了

我认为机器人看不到它,该地址受垃圾邮件保护。

您可以使用 simple mailto,请参阅下面的简单标记。

<a href="mailto:name@gmail.com">Click here to mail</a>

单击后,它将打开您的 Outlook 或您设置的任何电子邮件客户端。

嘿格兰特,感谢您编辑我使用的术语。我也赶时间。
2021-04-25 23:54:43