触发电子邮件 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
,因为它未注册。
的文档
- 如果您使用的是 Google 工作区,则应使用
smtp-relay.gmail.com
(每日 10k 条消息限制)
- 如果您是普通 Gmail 用户,您应该使用
smtp.gmail.com
(每天 2k 封邮件限制)
如果您打算超出这些限制,您应该考虑使用第三方邮寄服务。
我安装了扩展程序以在数据库写入时触发电子邮件。我的网站有一个简单的 '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
,因为它未注册。
- 如果您使用的是 Google 工作区,则应使用
smtp-relay.gmail.com
(每日 10k 条消息限制) - 如果您是普通 Gmail 用户,您应该使用
smtp.gmail.com
(每天 2k 封邮件限制)
如果您打算超出这些限制,您应该考虑使用第三方邮寄服务。