Firebase Nodemailer-快照数据问题

时间:2020-02-27 10:13:20

标签: javascript reactjs firebase google-cloud-functions nodemailer

我希望接收带有变量“ 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);

感谢大家的回答,祝您有愉快的一天!

1 个答案:

答案 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);
}; 

让我知道它是否有效。