使用 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 = () => 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通过google api发送邮件失败
使用javascript通过google api发送邮件失败
如何使用 JavaScript 使用 Mandrill 发送电子邮件?