我尝试使用gmail API从节点应用程序发送电子邮件。这是我的代码:
function sendEmail(auth) {
var gmail = google.gmail('v1');
gmail.users.messages.send({
auth,
userId: 'me',
resource: {
payload: {
mimeType: 'message/rfc822',
headers: [{name: 'To', value: 'ayeritsian@gmail.com'},
{name: 'Subject', value: 'test'},
{name: 'From', value: 'ayeressian2@gmail.com'}]
},
raw: new Buffer('test123').toString('base64')
},
internalDate: Date.now()
}, function (err, bla, IncommingMessage) {
console.log(arguments);
console.log('end');
});
}
当我运行应用程序时,我不断收到退回消息"发生错误。您的消息未发送。错误消息的描述性不够,几乎没有关于google-api节点包的文档。如果有人能帮助我,我将不胜感激。
您需要将整个电子邮件放在邮件的"原始"字段中,解析出的邮件不适用于发送。 C.F. https://developers.google.com/gmail/api/guides/sending
这类似于Python,我相信你可以翻译成node.js :)
email = "From: myemail@gmail.comrnTo: someguy@gmail.comrnSubject: hey check this outrnrnhi someguy, this is my email body here. it's plain text."
message.raw = base64_websafe(email)
对于它的价值,我有一个与你类似的问题。我在应用程序/用户的收件箱中不断收到一条模糊的错误消息。
From: nobody@gmail.com
An error occurred. Your message was not sent.
为我解决问题的是将消息 ID 属性添加到我创建的缓冲区中。基本上,我的信息不是按照他们在此处文档中提到的 rfc822 规范编写的。😁
这是我引用的文档,下面是我的片段。
module.exports = function (policyMeta) {
log.info('BUILDING EMAIL');
const message = 'From: xxx@xxx.comrn' +
'To: xxx@xxx.comrn' +
`Date: ${new Date()}rn` +
'Subject: Howdy Mundorn' +
`Message-ID: ${uuid()}rn` +
'look mom i send a message';
const params = {
auth: Auth.getGoogleAuthClient(),
userId: 'me',
media: { mimeType: 'message/rfc822' },
resource: {
raw: new Buffer(message).toString('base64')
}
};
return sendEmail(params).then((res) => console.log(res, '🔥🔥success🔥🔥'));
};