如何使用NodejS向Gmail API函数添加参数

时间:2019-01-25 22:22:02

标签: javascript node.js gmail

我正在使用Gmail API来发送来自表单的电子邮件。我可以成功发送具有以下功能的电子邮件:

function sendMessage(auth, callback) {
  const gmail = google.gmail({version: 'v1', auth});
  var base64EncodedEmail = btoa(`To: REDACTED\n` +
             `Subject: Test 2\n` +
             `Date:\r\n` + // Removing timestamp
             `Message-Id:\r\n` + // Removing message id
             `From:\r\n` + // Removing from
             `Name - Test 2\nSecond Line\n3rd Line\n\nThis is a test to see if the email was sent correctly.`) // Adding our actual message

  var mail = base64EncodedEmail;

  var request = gmail.users.messages.send({
    'auth': auth,
    'userId': 'me',
    'resource': { 
      'raw': mail
      }
    }, function(err, gmailMessage) {
      if (callback) {
        return callback(err, gmailMessage);
      }

      if (err) {
        console.log('Error while trying to send gmail message => ' + err);
      }
  });
}

这样称呼:authorize(JSON.parse(content), sendMessage);

如您所见,没有任何参数传递给它(我相信它接受的auth参数来自authorize函数)。

这一切都很好,但我显然不想在base64EncodedEmail变量中对这些信息进行硬编码。我现在有一封电子邮件表单,该表单将表单信息放入该格式并使用base64对其进行编码,以便可以将其传递给原始表单。但实际上,我似乎无法弄清楚如何编辑我的函数,以便实际上让我将base64字符串作为参数传递。理想情况下,它将如下所示:

function sendMessageTest(auth, mail, callback) {
  const gmail = google.gmail({version: 'v1', auth});
  //console.log(message);
  //var mail = message; // the b64 string
  console.log(callback);

  var request = gmail.users.messages.send({
    'auth': auth,
    'userId': 'me',
    'resource': { 
      'raw': mail
      }
    }, function(err, gmailMessage) {
      if (callback) {
        return callback(err, gmailMessage);
      }

      if (err) {
        console.log('Error while trying to send gmail message => ' + err);
      }
  });
}

我一直在尝试与此联系:

authorize(JSON.parse(content), sendMessageTest('', base64EncodedEmail));

我知道参数实际上已成功传递,因为我可以使B64字符串写入该函数内部的控制台,但是遇到以下错误消息:

    callback(oAuth2Client);
    ^

TypeError: callback is not a function

我真的不确定我在做什么错。这来自节点here的官方文档,其中包含我正在使用的启动代码。

0 个答案:

没有答案