使用 sendgrid 通过 firebase 触发器发送电子邮件
sending email through firebase triggers using sendgrid
我在 firebase.I 中使用 onCreate 触发器向用户发送电子邮件,我正在使用 sendgrid 模板发送电子邮件。当在 firestore 中创建新文档时,它应该触发向用户发送电子邮件。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const sgMail = require('@sendgrid/mail');
const SENDGRID_API_KEY = 'SG.ivqQZKFcSdqONZZ7IRtkjA.1RdSs50..kBaQ';
sgMail.setApiKey(SENDGRID_API_KEY);
exports.firestoreEmail = functions.firestore
.document('userAccount/{userId}')
.onCreate(event => {
const userID = event.params.userId;
if (userID === undefined) {
console.log('userID DOES NOT EXIST')
// This was a deletion event, we don't want to process this
return;
}
else{
console.log(userID )
return db.collection('userAccount').doc(userID)
.get()
.then(doc => {
const user = doc.data()
const msg = {
to: 'lekha.saraf@nexivo.co',
from: 'lekhasaraf09@gmail.com',
subject: 'NewFollower',
templateId: '8...............d760e',
substitutionWrappers: ['{{', '}}'],
substitutions: {
name: user.UserName
// and other custom properties here
}
};
return sgMail.send(msg)
})
// .then(() => console.log('email sent!') )
} // .catch(err => console.log(err) )
});
我得到的错误是:
类型错误:无法读取未定义的 属性 'userId'
您有 2 个来自 .onCreate()
方法的参数。创建的文档和事件的快照。
exports.firestoreEmail = functions.firestore
.document('userAccount/{userId}')
.onCreate((documentSnapshot, event) => {
const userID = event.params.userId;
const documentData = documentSnapshot.data();
我不知道 event.params.userId
是否适用于 Firestore。
如果您需要创建文档的用户的 userId,您可以使用 const userID = event.auth.uid
。
如果您需要用户的 userId,您将向您发送邮件,您应该在文档中写下 userId。
我在 firebase.I 中使用 onCreate 触发器向用户发送电子邮件,我正在使用 sendgrid 模板发送电子邮件。当在 firestore 中创建新文档时,它应该触发向用户发送电子邮件。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const sgMail = require('@sendgrid/mail');
const SENDGRID_API_KEY = 'SG.ivqQZKFcSdqONZZ7IRtkjA.1RdSs50..kBaQ';
sgMail.setApiKey(SENDGRID_API_KEY);
exports.firestoreEmail = functions.firestore
.document('userAccount/{userId}')
.onCreate(event => {
const userID = event.params.userId;
if (userID === undefined) {
console.log('userID DOES NOT EXIST')
// This was a deletion event, we don't want to process this
return;
}
else{
console.log(userID )
return db.collection('userAccount').doc(userID)
.get()
.then(doc => {
const user = doc.data()
const msg = {
to: 'lekha.saraf@nexivo.co',
from: 'lekhasaraf09@gmail.com',
subject: 'NewFollower',
templateId: '8...............d760e',
substitutionWrappers: ['{{', '}}'],
substitutions: {
name: user.UserName
// and other custom properties here
}
};
return sgMail.send(msg)
})
// .then(() => console.log('email sent!') )
} // .catch(err => console.log(err) )
});
我得到的错误是: 类型错误:无法读取未定义的 属性 'userId'
您有 2 个来自 .onCreate()
方法的参数。创建的文档和事件的快照。
exports.firestoreEmail = functions.firestore
.document('userAccount/{userId}')
.onCreate((documentSnapshot, event) => {
const userID = event.params.userId;
const documentData = documentSnapshot.data();
我不知道 event.params.userId
是否适用于 Firestore。
如果您需要创建文档的用户的 userId,您可以使用 const userID = event.auth.uid
。
如果您需要用户的 userId,您将向您发送邮件,您应该在文档中写下 userId。