我尝试使用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节点包的文档。如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:0)
您需要将整个电子邮件放在邮件的“原始”字段中,解析后的邮件不能与send一起使用。 C.F. https://developers.google.com/gmail/api/guides/sending
这类似于python,我相信你可以转换为node.js :)
email = "From: myemail@gmail.com\r\nTo: someguy@gmail.com\r\nSubject: hey check this out\r\n\r\nhi someguy, this is my email body here. it's plain text."
message.raw = base64_websafe(email)
答案 1 :(得分:0)
为了它的价值,我遇到了类似的问题。我一直在我的应用/用户的收件箱中收到一个模糊的错误消息。
From: nobody@gmail.com
An error occurred. Your message was not sent.
解决这个问题的原因是将Message-ID属性添加到我创建的Buffer中。基本上,我的消息并不是他们在文档here中提到的rfc822规范。
Here is the document I referenced及以下是我的摘要。
module.exports = function (policyMeta) {
log.info('BUILDING EMAIL');
const message = 'From: xxx@xxx.com\r\n' +
'To: xxx@xxx.com\r\n' +
`Date: ${new Date()}\r\n` +
'Subject: Howdy Mundo\r\n' +
`Message-ID: ${uuid()}\r\n` +
'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'));
};