我希望我的网站有能力发送电子邮件而不刷新页面。我想用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...    */
}

当前回答

似乎有一个新的解决办法即将出现。它叫EmailJS。他们声称不需要服务器代码。你可以申请邀请。

2016年8月更新:EmailJS似乎已经上线了。你每月可以免费发送200封电子邮件,如果数量更多,还可以订阅。

其他回答

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


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

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

JavaScript不能从web浏览器发送电子邮件。然而,从你已经尝试实现的解决方案中退一步,你可以做一些满足最初需求的事情:

发送邮件时不刷新页面

您可以使用JavaScript构造电子邮件所需的值,然后向实际发送电子邮件的服务器资源发出AJAX请求。(我不知道你在使用什么服务器端语言/技术,所以这部分取决于你。)

如果您不熟悉AJAX,快速搜索谷歌将为您提供大量信息。通常,你可以使用jQuery的$.ajax()函数快速启动并运行它。您只需要在服务器上有一个可以在请求中调用的页面。

我知道我写这个问题的答案已经太迟了,但我认为这将用于任何想通过javascript发送电子邮件的人。

我建议的第一种方法是在服务器上使用回调来完成此操作。如果你真的想用javascript处理它,下面是我的建议。

我发现最简单的方法是使用smtpJs。一个可以用来发送电子邮件的免费图书馆。

1.包括如下所示的脚本

<script src="https://smtpjs.com/v3/smtp.js"></script>

2. 你可以发一封这样的邮件

Email.send ({ 主持人:“smtp.yourisp.com”, 用户名:" Username ", 密码:Password, 致:“them@website.com” 来自:“you@isp.com”, 主题:“这就是主题”, 身体:“这就是身体” }) ( 消息=>警报(消息) );

这是不可取的,因为它将显示您的密码在客户端。因此,您可以执行以下操作,加密SMTP凭据,并将其锁定到单个域,并传递一个安全令牌而不是凭据。

Email.send ({ SecureToken:“C973D7AD-F097-4B95-91F4-40ABC5567812”, 致:“them@website.com” 来自:“you@isp.com”, 主题:“这就是主题”, 身体:“这就是身体” }) ( 消息=>警报(消息) );

最后,如果你没有SMTP服务器,你可以使用SMTP中继服务,如弹性邮件

这里还有到官方SmtpJS.com网站的链接,您可以在其中找到所需的所有示例,以及创建安全令牌的位置。

我希望有人觉得这些细节有用。快乐的编码。

似乎有一个新的解决办法即将出现。它叫EmailJS。他们声称不需要服务器代码。你可以申请邀请。

2016年8月更新:EmailJS似乎已经上线了。你每月可以免费发送200封电子邮件,如果数量更多,还可以订阅。

因为这些都是很棒的信息,有一个叫做Mandrill的小api可以从javascript发送邮件,它工作得很完美。你可以试试。这里有一个开始的小教程。