问题描述
请求的行为:
我想一起使用Sendgrid和Firestore Cloud功能发送大量电子邮件。电子邮件应根据收件人显示一些单独的用户数据(例如,用户ID和用户名)。
当前状态
我创建了一个可运行的云功能。它从firestore获取用户数据,并使用sendgrid API将电子邮件发送到给定的电子邮件地址。
问题
但是,它将所有用户的ID发送到每个电子邮件地址,而不是仅发送属于某个订户的ID。示例:
我的Firestore集合中有3个具有3个ID的订户: “ abc”,“ pqr”,“ xyz”
该功能应该发送三封电子邮件,包括属于电子邮件地址的ID。相反,该函数现在会向每个地址发送“ abcpqrxyz”。
我的云功能:
export const sendAllEmails = functions.https.onCall(async (event) => {
const subscriberSnapshots = await admin.firestore().collection('subscribers').get();
const emails = subscriberSnapshots.docs.map(snap => snap.data().email);
const ids = subscriberSnapshots.docs.map(snap => snap.id);
const individualMail = {
to: emails,from: senderEmail,templateId: TEMPLATE_ID,dynamic_template_data: {
subject: event.subject,text: event.text,id: ids // sends all ids to everyone instead of a single id in every mail
}
await sendGridMail.send(individualMail);
return {success: true};
});
我是否需要遍历电子邮件和ID,或者SendGrid API对此行为是否具有更智能的实现?
解决方法
您必须通读这些元素中的每一个以获取值并构造对象。
也许参数没有正确包含在请求的正文中。请注意,个性化对象包含为每封邮件提供的数据。
pygame.error: Couldn't open soccer.png