我希望我的网站有能力发送电子邮件而不刷新页面。我想用Javascript。

<form action="javascript:sendMail();" name="pmForm" id="pmForm" method="post">
Enter Friend's Email:
<input name="pmSubject" id="pmSubject" type="text" maxlength="64" style="width:98%;" />
<input name="pmSubmit" type="submit" value="Invite" />

这是我想调用的函数,但我不确定把什么放入javascript函数。从我所做的研究中,我发现了一个使用mailto方法的示例,但我的理解是,它实际上并不直接从站点发送。

所以我的问题是,我可以在哪里找到什么放入JavaScript函数直接从网站发送电子邮件。

function sendMail() {
    /* ...code here...    */
}

当前回答

Javascript是客户端,你不能用Javascript发邮件。浏览器可能只识别mailto:,并启动默认的邮件客户端。

其他回答

解决这个问题的一个“答案”似乎是实现一个SMPT客户机。关于带有SMTP客户端的JavaScript库,请参阅email.js。

这是SMTP客户端的GitHub回购。根据repo的README,根据客户端浏览器的不同,似乎需要各种shims或polyfill,但总的来说,这似乎是可行的(如果实际上没有显著完成),尽管不是以一种简单的方式来描述,甚至在这里也没有一个合理的长答案。

有一种组合服务。您可以将上面列出的解决方案(如mandrill)与EmailJS服务结合使用,这可以使系统更加安全。 不过他们还没有开始服务。

你不能直接用javascript发送电子邮件。

但是,您可以打开用户的邮件客户端:

window.open('mailto:test@example.com');

还有一些参数可以预填充主题和主体:

window.open('mailto:test@example.com?subject=subject&body=body');

另一种解决方案是对服务器进行ajax调用,以便服务器发送电子邮件。注意不要允许任何人通过你的服务器发送任何电子邮件。

我要把这个消息告诉你。JavaScript本身不能发送电子邮件。


根据OP问题的上下文,我上面的答案已经不成立了,正如@KennyEvitt在评论中指出的那样。看起来您可以使用JavaScript作为SMTP客户端。

但是,我还没有深入研究它是否足够安全和跨浏览器兼容。所以,我既不鼓励也不劝阻你使用它。使用风险自负。

Javascript是客户端,你不能用Javascript发邮件。浏览器可能只识别mailto:,并启动默认的邮件客户端。