我安装了扩展程序,以便在数据库写入时触发电子邮件。我的网站有一个简单的"联系我"表格,我不希望有太多流量,所以我想建立一个简单通知电子邮件系统。
然而,我很难把会议安排好。
我配置了一个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发送电子邮件处理传递消息时队列错误=messages/vG9gviTCyh1Glxl1vBu1:错误:queryA EREFUSED smtp.gmail.net
此外,我看到Firestore集合中添加了一个delivery
对象,但出现了相同的错误。
鉴于以上情况,我认为代码部分正在工作——我成功地将字段存储在Firestore中,它触发了一个云函数。我认为问题在于触发器电子邮件扩展或gmail设置中的配置。
现在,当我在谷歌上搜索(在firebase中使用带有Trigger电子邮件扩展名的GMAIL(时,我没有发现这方面有多大用处,这暗示我可能有一个错误的开始,也许应该考虑其他选择?如果不是这样,那么我还可以检查其他哪些设置?我确实在gmail中为自己创建了一个应用程序密码,但我不知道应该在触发电子邮件扩展中的哪里提交。我是否还需要在身份验证模板配置中将gmail配置为SMTP服务器?
分解错误消息,
queryA
-提交DNS a记录查询EREFUSED
-被拒绝(引发错误-例如找不到(smtp.gmail.net
-查询的主题
简而言之,这意味着找不到web服务器smtp.gmail.net
,因为它没有注册。
基于使用Gmail发送电子邮件的文档,
- 如果您使用的是谷歌工作区,则应使用
smtp-relay.gmail.com
(每日消息限制为10k( - 如果你是Gmail的常客,你应该使用
smtp.gmail.com
(每日邮件限制为2k(
如果您计划超过这些限制,您应该考虑使用第三方邮件服务。