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

时间:2016-06-05 14:09:16

标签: javascript email reactjs redux-form

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

当他们点击mailto时,我想生成一封电子邮件并将其发送给自己(即来自和/或回复将是包含邮件的电子邮件地址。

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

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

注意:我目前使用express进行托管,因为它可以免费获取静态内容。我调查了是否可以运行nodemailer服务器并使用类似{{1}}之类的服务器,但是我认为我最终还是会在某个地方付费运行它,这似乎有点矫枉过正,因为我不希望每个月发送超过25-50封电子邮件。

2 个答案:

答案 0 :(得分:4)

TL; DR请勿在客户端执行此操作。这就是后端的用途。

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

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

此类提供程序的一个示例是SendGrid,它们提供了一个RESTful API,就像您正在寻找的那样。 See how to send an email in the API docs

SendGrid不是您唯一的选择。 Here is a comparison of different transactional email providers

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

答案 1 :(得分:2)

我相信这可能已经回复here或可能here

这两种方法都使用用户的邮件客户端,但是没有使用Express的AJAX服务器端方法,我不相信有任何方法可以在javascript中完成这个。< / p>