【发布时间】:2019-08-10 12:50:17
【问题描述】:
在一些帮助下,我成功地创建了一个云函数,它在创建另一个文档时发送一封电子邮件。我的意图是这封电子邮件显示文档中的数据。我的方法是在 SendGrid 模板中使用替换并将它们绑定到 Firestore 中文档的数据。
Firestore 将其数据存储在 /requests 下,每个文档都有一个随机创建的 ID。每次提交表单时都会创建一个文档。
目前我已成功收到一封电子邮件,但没有所需的数据/替换。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const SENDGRID_API_KEY = functions.config().sendgrid.key;
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(SENDGRID_API_KEY);
exports.firestoreRequest = functions.firestore.document('requests/{requestId}')
.onCreate((snap, context) => {
const requestId = snap.id; // get the id
const db = admin.firestore();
return db.collection('requests').doc(requestId)
.get()
.then(doc => {
const request = doc.data();
const msg = {
to: 'fuhr@gmx.net',
from: 'fuhr@gmx.net',
templateId: 'd-3cd6b40a74f34b53d1633702107d2',
substitutionWrappers: ['{{', '}}'],
substitutions: {
name: request.name,
lastname: request.lastname,
email: request.email,
package: request.package,
date: request.date,
text: request.text
// and other custom properties here
}
};
return sgMail.send(msg)
})
.then(() => console.log('email sent!') )
.catch(err => console.log(err) )
});
SendGrid 模板:
<html>
<head>
<title>Request</title>
</head>
<body>
Name: {{name}}<br>
Family: {{lastname}}<br>
Email: {{email}}<br>
Package: {{package}}<br>
Date: {{date}}<br>
Text: {{text}}<br>
</body>
</html>
【问题讨论】:
标签: angular firebase google-cloud-firestore sendgrid