使用js从浏览器发送电子邮件

The*_*imp 3 javascript email reactjs redux-form

我创建了一个简单的联系表单,允许用户在我的网站上输入其姓名,电子邮件和短信(使用进行运行firebase hosting)。

当他们点击submit我要生成一封电子邮件,从它们发送到自己(即和/或回复到将它们输入的电子邮件地址),包含他们的信息。

我知道,出于多种原因,在浏览器中执行此操作存在一些限制。我也知道,可以通过使用mailto电子邮件中预先填充的额外信息的链接来实现此目的,但是我也不想使用这种方法。

相反,我想知道是否有什么方法可以从浏览器中实现全部目标?我一直认为是POST向另一个服务(不是我本人拥有)发出请求,然后该服务将按所述发送电子邮件。有人对这种要求有经验吗?

注意:我目前正在托管,firebase因为它免费提供静态内容。我调查了我是否可以运行express服务器并使用诸如之类的东西nodemailer,但是我认为我最终会花钱在某个地方运行它,因为我预计不会发送超过25至50封电子邮件,这似乎有些过头了一个月。

Tob*_*ühl 7

2019更新

EmailJS(免费增值)

现在可以通过SaaS产品EmailJS实现。它们充当您和电子邮件提供商之间的中间人,确保API密钥不公开。

从他们的主页:

无需服务器

我们提供了一种即装即用的服务,使您可以发送不带服务器端代码的电子邮件。

SmtpJs(免费)

此答案概述了替代解决方案。请确保不要将您的SMTP凭据泄漏到网络上。

原始答案

TL; DR不要在客户端这样做。这就是后端的用途。

您不能仅从浏览器发送电子邮件,因为浏览器的构建方式不像邮件客户端那样。没有要使用的邮件服务器。

您需要从服务器或第三方提供商发送电子邮件。

此类提供程序的一个示例是SendGrid,它们提供了RESTful API,就像您正在寻找的那样。在API文档中了解如何发送电子邮件

SendGrid不是您唯一的选择。这是不同交易电子邮件提供商的比较

但是,存在安全风险:如果让客户从他们的浏览器调用API,那么您就向他们公开了API密钥。任何开发人员都可以轻松地使用此API密钥从您的SendGrid帐户发送电子邮件。那不是你想要的。最好在后端执行此操作。不想为服务器付费?没问题,有免费托管。如果这是您后端的唯一功能,则免费提供就足够了。


Squ*_*rel 2

我相信这可能已经在这里或可能在这里得到解答?

这两种方法都使用用户的邮件客户端,但如果不使用使用 AJAX Express 的服务器端方法,我不相信有任何方法可以纯粹用 javascript 来完成此操作。