发送电子邮件与Gmail的API不工作

我正在尝试通过在node.js中使用google api来发送电子邮件

var sendmsg = function(auth) { var to = 'foo@gmail.com', subject = 'Hello World', content = 'send a Gmail.' var email = "To: "+ to +"\r\n"+ "Subject: "+subject+"\r\n"+ content; var base64EncodedEmail = new Buffer(email).toString('base64'); var gmail = google.gmail('v1'); var request = gmail.users.messages.send({ 'userId': auth, 'message': { 'raw': base64EncodedEmail } }, function (err, result) { console.log('result'+result); }); }; 

我从谷歌文档中的快速入门示例中读取了这个示例,该示例读取了我的电子邮件帐户中的标签(工作正常)。 而我只是把范围改为:

 var SCOPES = ['https://mail.google.com/', 'https://www.googleapis.com/auth/gmail.modify', 'https://www.googleapis.com/auth/gmail.compose', 'https://www.googleapis.com/auth/gmail.send']; 

并创build该var =电子邮件

 var to = 'foo@gmail.com', subject = 'Hello World', content = 'send a Gmail.' var email = "To: "+ to +"\r\n"+ "Subject: "+subject+"\r\n"+ content; 

然后,我只是试图使用gmail.users.messages.send方法..但是当运行结果返回以下内容:

 <HTML> <HEAD> <TITLE>Bad Request</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>Bad Request</H1> <H2>Error 400</H2> </BODY> </HTML> 

任何想法我失踪? 我想我创build我的VAR'电子邮件'的方式是错误的,但我不知道应该如何

userId字段的值必须是发件人的电子邮件地址(或简称), auth必须在auth字段中传递,并且消息应该在resource字段中传递。 您的信息在内容有效之前缺less一个From标题和一个额外的新行。 该消息也必须是base64url编码:

 function sendMessage(auth, from, to, subject, content) { // The Gmail API requires url safe Base64 // (replace '+' with '-', and '/' with '_') var encodedEmail = new Buffer( 'From: ' + from + '\r\n' + 'To: ' + to + '\r\n' + 'Subject: ' + subject + '\r\n\r\n' + content ).toString('base64').replace(/\+/g, '-').replace(/\//g, '_'); var gmail = google.gmail('v1'); var request = gmail.users.messages.send({ auth: auth, userId: 'me', resource: { raw: encodedEmail } }, function (err, result) { console.log('result:', result); }); };