我正在使用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的官方文档,其中包含我正在使用的启动代码。