Как только новый поставщик зарегистрирован в моей базе данных Firebase Realtime, я хочу отправить новому поставщику приветственное письмо по электронной почте через Sendgrid.Я создал функцию Firebase newVendorEmail () для этого в папке functions / src / index.ts моего приложения и настроил там все в соответствии с https://app.sendgrid.com/guide/integrate/langs/nodejs/verify.. Я также могу получать информацию о поставщике из Firebase через onCreate () в newVendorEmail () и без проблем передайте их в часть dynamic_template_data объекта msg.Но когда функция newVendorEmail () была запущена в функциях Firebase, электронное письмо не было отправлено, и я получил этот ответ вместо этого в моей консоли функций Firebase: TypeError: Object.values не является функцией в Mail.setDynamicTemplateData (/ user_code / node_modules / @ sendgrid)/mail/node_modules/@sendgrid/helpers/classes/mail.js:342:12).Помогите, пожалуйста?
Я пытался обновиться до последней версии пакета @ sendgrid / mail npm v6.4.0, пытался перейти на новый ключ API Sendgrid, пытался сохранить этот новый ключ API в process.env в соответствии с инструкциями Sendgrid.Пример github https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/kitchen-sink.md вместо functions.config (), но безрезультатно.
in node/process.env:
{ SENDGRID_API_KEY:
'SG....E',
...
}
in functions/src/index.ts:
'use strict'
const functions = require('firebase-functions')
const admin = require('firebase-admin')
const sendgrid = require('@sendgrid/mail')
// init function
admin.initializeApp()
//init firebase ref const
const ref = admin.database().ref()
// set sendgrid api from process env
sendgrid.setApiKey(process.env.SENDGRID_API_KEY)
export const newVendorEmail = functions.database
.ref('users/{userId}/profile')
.onCreate((snapshot, context) => {
// call field data using snapshot.val()
let msg
const userData = snapshot.val()
if (userData.type === 'vendor') {
// set email data
msg = {
to: userData.email,
from: {
name: 'Blk. Party',
email: '...@blkparty.com'
},
// custom templates
templateId: '...',
dynamic_template_data: {
subject: 'Welcome to Blk. Party!',
name: userData.name,
regLink: userData.regLink
},
}
}
// send email via sendgrid
return sendgrid.send(msg)
})
in package.json:
...
"dependencies": {
"@sendgrid/mail": "^6.4.0",
"firebase-admin": "~6.0.0",
"firebase-functions": "^2.1.0"
},
"devDependencies": {
"@sendgrid/mail": "^6.4.0",
...
}
...
Я ожидаю, что письма будут отправлены без ошибок.