【发布时间】:2021-06-18 06:26:48
【问题描述】:
我是 javascript 新手,我正在尝试使用 firebase 可调用函数发送电子邮件。这个想法是在从 iOS 应用程序调用时从云功能向用户电子邮件发送代码。但问题是,可以部署功能,但我不确定我的代码有什么问题,因为它没有发送电子邮件。我已经配置了 Sendgrid api 密钥和模板 ID,所以这里似乎不是问题。另外,firebase 上的功能日志没有返回任何错误。有人可以帮忙吗?这是我的代码
云函数代码:
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const db = admin.firestore();
const sgMail = require("@sendgrid/mail");
const SENDGRID_API_KEY = functions.config().sendgrid.key;
const TEMPLATE_ID = functions.config().sendgrid.template;
sgMail.setApiKey(SENDGRID_API_KEY);
exports.requestTurn = functions.https.onCall((data, context) => {
const uid = context.auth.uid;
console.log("UID: " + uid);
const email = context.auth.token.email;
console.log("Name: " + email);
const send = "Here is your query number!";
const docRef = db.collection("Users").doc(uid);
const code = docRef.set({"sentEmail": send}, {merge: true});
const msg = {
to: email,
from: "myemailaddress",
templateId: TEMPLATE_ID,
dynamic_template_data: {
subject: "Welcome",
CODE: send,
}
};
const res = db.collection("mail").doc().set(msg);
console.log("email saved to Firestore!");
return sgMail.send(msg);
// return {
// message: text,
// code,
// };
})
这就是我从 swiftui 应用程序中调用它的方式:
func requestTurn(){
let data = ["Hello!"]
functions.httpsCallable("requestTurn").call(data) { (result, error) in
print("Function returned")
if let err = error {print(err)}
if let res = result {print(res)}
}
【问题讨论】:
-
您在日志中看到任何错误吗?如果你发现潜在的错误怎么办?此外,请注意,您应该将异步
set()和send()方法返回的 Promise 链接起来。 -
您好,请问如何退货?
标签: javascript google-cloud-firestore swiftui google-cloud-functions sendgrid