使用 firebase 功能和 nodemailer 从联系表单发送电子邮件

Posted

技术标签:

【中文标题】使用 firebase 功能和 nodemailer 从联系表单发送电子邮件【英文标题】:Sending emails from contact form, with the firebase functions and nodemailer 【发布时间】:2017-09-27 23:42:21 【问题描述】:

我使用这些技术:

角 4 Firebase firebase 托管 firebase 函数 firebase 实时数据库 firebase 存储

我在 firebase 托管上托管我的网站,并且我有一个如下图所示的联系表格,我希望每次用户提交该表格时,都向网站管理员发送一封电子邮件

我将如何使用 firebase 和 Nodemailer 发送电子邮件

我应该要求函数文件夹中 index.js 中的 nodemailer 还是错误的?

这是我的联系表格。

【问题讨论】:

github.com/firebase/functions-samples/tree/master/… 到目前为止,我了解到我们无法在 Firebase 服务器上运行脚本,因此我们必须依赖 Nodemailer 之类的服务,如果您知道如何在没有像 Nodemailer 之类的 3rd 方服务的情况下做到这一点,请告诉我知道。因为我也想使用云功能而不是第 3 方。 【参考方案1】:

当您不确定某事是如何完成时,询问总是好的。在这里,我将尝试为您提供一些有关如何实现此目的的简单步骤。

首先确保在您的项目中初始化 Firebase 函数。如果您不知道该怎么做,只需谷歌一下,在他们的公司网站上,他们对每个主题都有惊人的解释。

完成后,使用 HTTP 触发器设置单个 Firebase 函数。确保在项目的 Firebase 函数文件夹中运行 npm install nodemailer@2.4.1 --save。安装确实是 2.4.1 版本是一个关键点,因为在尝试部署该功能本身时,所有版本都会崩溃。 (我还没弄明白为什么)

编辑:

我刚刚发现 Firebase 函数在更新版本的 Nodemailer 中崩溃的原因是什么。这是我正在运行的 Node 版本。更新我的节点后,一切都很好。这里也提到了这个问题: Link to official GitHub page

所以,仍然取决于您喜欢哪个版本,只要确保如果您运行的是最新的 Nodemailer,它还需要更新的 Node.js。 ;)

完成后,打开你的Firebase函数代码,进入Nodemailer官网,看看单条消息是如何组成和发送的。那里有一个很棒的例子,实际上主要是复制粘贴到你的代码中,还有一些额外的配置(用户名和密码)。

确保从您的前端 Angular 应用程序发出 POST 请求,其中包含来自表单上这些字段的数据。您还需要确保当您的 Firebase 函数接收到请求时,它会配置电子邮件消息,发送它并在最后以正确的状态代码和消息进行响应。

我写的所有东西可能听起来有点复杂,我不知道你的 ICT 能力,但请确保你仔细阅读,谷歌你不明白的地方,如果你仍然找不到答案,请确保您在这里回复,以便我或其他人可以为您提供帮助。

我还会在这里放一个链接,您可以在此过程中使用它来指导自己。

Click here to see an example from Google themselves

祝你好运。

【讨论】:

在firebase上部署此功能后,您能分享更多步骤吗? 您到底想知道什么?我不明白你的问题。 此功能是否需要加入 Blaze Firebase 计划?

以上是关于使用 firebase 功能和 nodemailer 从联系表单发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Nodemailer 和 Firebase Cloud Functions 的错误授权 OAuth2 无效

使用 Firebase Cloud Functions 时 Nodemailer 查询 A EREFUSED localhost

与 Firebase 函数一起使用时,Nodemailer 无法正常工作

如何使用 Firebase 云功能发送自定义电子邮件

Firebase 函数环境变量无法读取未定义的属性

通过 firebase 项目上的节点发送电子邮件