6

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

当他们单击时,submit我想生成一封电子邮件并将其从他们那里发送给我自己(即来自和/或回复将是他们输入的电子邮件地址),其中包含他们的消息。

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

相反,我想知道是否有任何方法可以从浏览器中实现这一切?我的想法是POST向另一项服务(不属于我自己)提出请求,然后按照描述发送电子邮件。有没有人对这种类型的要求有任何经验?

注意:我目前正在托管使用firebase,因为它对静态内容是免费的。我研究了我是否可以运行一个express服务器并使用类似的东西nodemailer,但是我认为我最终会为某个地方支付费用来运行它,这似乎有点矫枉过正,因为我预计不会发送超过 25-50 封电子邮件一个月。

4

2 回答 2

8

2019 更新

电子邮件JS(免费增值)

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

从他们的主页:

无需服务器

我们提供开箱即用的服务,让您无需服务器端代码即可发送电子邮件。

SmtpJs(免费)

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

原始答案

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

您不能只从浏览器发送电子邮件,因为浏览器不像邮件客户端那样构建。没有邮件服务器可以使用。

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

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

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

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

于 2016-06-05T14:30:58.117 回答
2

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

这两种方法都使用用户的邮件客户端,但如果不使用使用 Express of AJAX 的服务器端方法,我认为没有任何方法可以纯粹在 javascript 中执行此操作。

于 2016-06-05T14:28:08.617 回答