我希望接收带有变量“ mail”,“ message”,“ name” ...的电子邮件。像“ Hello {name},您好吗?您的电子邮件是{mail},这是来自联系人的{message}的副本表格” ...问题是我只收到{mail}而不是{message} {name}
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const nodemailer = require('nodemailer');
const gmailEmail = functions.config().gmail.login;
const gmailPassword = functions.config().gmail.pass;
admin.initializeApp();
var goMail = function (message) {
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: gmailEmail,
pass: gmailPassword
}
});
const mailOptions = {
from: gmailEmail,
to: 'la***@gmail.com',
subject: 'Hello ✔',
text: '!' + message,
html: '!' + message
};
const getDeliveryStatus = function (error, info) {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
};
transporter.sendMail(mailOptions, getDeliveryStatus);
};
exports.onDataAdded = functions.database.ref('/emails/{sessionId}').onCreate(function (snap, context) {
const createdData = snap.val();
var text = createdData.mail;
goMail(text);
});
这就是我的Firebase实时数据库的外观
emails
-**sesionID*
mail: "randommail@gmail.com"
message:"test"
name:"testname"
我尝试从代码中添加/编辑此内容,但这不起作用:-/
var goMail = function (message, secondmessage)
const mailOptions = {
from: gmailEmail,
to: 'la***@gmail.com',
subject: 'Hello ✔',
text: '!' + message + secondmessage,
html: '!' + message + secondmessage
};
var text = createdData.mail;
var secondtext = createdData.name
goMail(text, secondtext);
感谢大家的回答,祝您有愉快的一天!
答案 0 :(得分:0)
您仅收到{{mail}},因为该值已经在您的云函数上设置为常数,而且在代码调用goMail函数时,您正在发送2个参数,而不是预期的1个参数。尝试将goMail函数更改为(例如):
var goMail = function (name, message) {
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: gmailEmail,
pass: gmailPassword
}
});
const mailOptions = {
from: gmailEmail,
to: 'la***@gmail.com',
subject: 'Hello ✔',
text: '!' + name + message,
html: '!' + name + message
};
const getDeliveryStatus = function (error, info) {
if (error) {
return console.log(error);
}
console.log('Message sent: %s', info.messageId);
};
transporter.sendMail(mailOptions, getDeliveryStatus);
};
让我知道它是否有效。