触发电子邮件 firebase 扩展 - nodemailer 出错

Trigger email firebase extension - error with nodemailer

我安装了扩展程序以在数据库写入时触发电子邮件。我的网站有一个简单的 'Contact me' 表单,我预计不会有很多流量,所以我想设置一个简单的通知电子邮件系统。

但是,我很难正确配置。

我配置了一个 firebase 触发器电子邮件扩展:

smtp connection URI: smtp://email:password@smtp.gmail.net:465
email documents collection: messages
default FROM address: Some Name <email>

在每次提交联系表单时,我都会按照以下格式将数据存储到 firestore:

let db = firebase.firestore();
db.collection("messages").add({
    from: "First Last <email>",
    to: "email",
    replyTo: "First Last <email>",
    message: {
        subject: "New message from website!",
        text: "some text"
    }
})
.then((docRef) => {
    console.log("Document written with ID: ", docRef.id);
})
.catch((error) => {
    console.error("Error adding document: ", error);
});

文档被写入 Firestore。

我在函数日志中看到的错误:

ext-firestore-send-email-processQueue Error when delivering message=messages/vG9gviTCyh1Glxl1vBu1: Error: queryA EREFUSED smtp.gmail.net

此外,我看到 Firestore 集合已添加了一个 delivery 对象,但出现了同样的错误。

鉴于以上情况,我认为代码部分正在运行 - 我成功地将字段存储在 Firestore 中并且它触发了一个云函数。我认为问题出在触发器电子邮件扩展名或 gmail 设置中的配置。

现在,我在谷歌搜索(在 firebase 中使用 GMAIL 和 Trigger 电子邮件扩展)时没有发现这有多大用处,这暗示我可能一开始就错了,也许应该考虑其他选择?如果不是这种情况,那么我还可以检查哪些其他设置?我确实在 gmail 中为自己创建了一个应用程序密码,但我不知道我应该在触发电子邮件扩展中的什么地方提交它。我是否还需要在身份验证模板配置中将 gmail 配置为 SMTP 服务器?

分解错误信息,

  • queryA - 提交 DNS A 记录查询
  • EREFUSED - 被拒绝(抛出错误 - 例如未找到)
  • smtp.gmail.net - 查询的主题

简而言之,这表示无法找到 Web 服务器 smtp.gmail.net,因为它未注册。

基于 sending email using Gmail

的文档
  • 如果您使用的是 Google 工作区,则应使用 smtp-relay.gmail.com(每日 10k 条消息限制)
  • 如果您是普通 Gmail 用户,您应该使用 smtp.gmail.com(每天 2k 封邮件限制)

如果您打算超出这些限制,您应该考虑使用第三方邮寄服务。