使用 javascript 发送邮件

Posted

技术标签:

【中文标题】使用 javascript 发送邮件【英文标题】:mailto using javascript 【发布时间】:2012-04-27 16:29:13 【问题描述】:

每当用户单击图像时,我想打开一个带有“收件人地址”的新 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()

【问题讨论】:

window 是只读变量。 是不是因为弹窗拦截器? 【参考方案1】:

请查找code in 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";
     );
);​

【讨论】:

【参考方案2】:

不需要 jQuery。并且没有必要打开一个新窗口。不向浏览器返回 HTTP 数据的协议(mailto:irc://magnet: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 = () =&gt; console.log("onbeforeunload"); window.location.href = "mailto:mail@example.org"; @DB 感谢您指出这个有趣的细节!这是有道理的……我猜是因为,就像我之前所说的,浏览器可能有一个用于处理伪协议的内置工具,比如 ftp://。这确实会替换当前页面内容,因此会触发 onbeforeunload 事件,即使浏览器中没有内置工具来处理 mailto:// URI。但这只是个人假设。在这种情况下,浏览器供应商应首先检查是否支持伪协议,否则不触发 onbeforeunload 事件。 @cjm2671 我在当前最新的 Chrome 版本 76.0.3809.100 在正常模式和隐身模式下测试了上述代码。一切正常。您是否有任何可能会阻止代码执行的浏览器扩展 (AddOn)?【参考方案3】:

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

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

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

注意不要阻止默认行为(event.preventDefault),我们必须让它这样做,因为我们刚刚替换了href去哪里

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

【讨论】:

【参考方案4】:

您可以使用简单的mailto,简单标记见下文。

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

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

【讨论】:

嘿,格兰特,感谢您编辑我使用的术语。我也很着急打字。【参考方案5】:

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

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

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

【讨论】:

window.open('mailto') 通常会在 URL 中打开一个带有 mailto 的空白选项卡,因此这种方式看起来更好【参考方案6】:

我不知道它是否有帮助,但我使用 jQuery 来隐藏电子邮件地址:

    $(function() 
        // planque l'adresse mail
        var mailSplitted 
            = ['mai', 'to:mye', 'mail@', 'addre', 'ss.fr'];

        var link = mailSplitted.join('');
        link = '<a href="' + link + '"</a>';
        $('mytag').wrap(link);
    );

希望对你有帮助。

【讨论】:

【参考方案7】:
document.location.href = "mailto:chrisgreg23@googlemail.com"

【讨论】:

A code-only answer is not high quality。虽然此代码可能很有用,但您可以通过说明其工作原理、工作方式、何时应该使用以及它的局限性来改进它。请edit您的回答包括解释和相关文档的链接。

以上是关于使用 javascript 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 JavaScript 以编程方式发送电子邮件

使用javascript通过google api发送邮件失败

使用javascript通过google api发送邮件失败

如何使用 JavaScript 使用 Mandrill 发送电子邮件?

JavaScript - 使用 AWS SES 发送电子邮件

从表单发送电子邮件(仅 HTML、javascript)