发送电子邮件与gmail api无法正常工作

时间:2016-09-14 15:19:38

标签: javascript node.js 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);
 });
};

我从google文档中的快速入门示例中获取了此示例,该示例读取了我的电子邮件帐户中的标签(工作正常)。我只是将范围更改为:

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'];

并创建了var = email

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>

知道我错过了什么吗?我想我创建var&#39; email&#39;是错的,但我不确定它应该如何

2 个答案:

答案 0 :(得分:0)

userId - 字段的值必须是发件人电子邮件地址(或简称为me),auth - 对象必须在{{1}中传递} field,消息应该在auth - 字段中传递。在内容有效之前,您的消息缺少resource标题和额外的新行。该消息也必须是base64url编码的:

From

答案 1 :(得分:0)

我强烈建议您使用Nodemailers系统,而不是自己构造尸体:

client recv resp hi