2016-09-14 125 views
2

我想发送一封电子邮件,通过使用Node.js的发送电子邮件使用Gmail API不工作

var sendmsg = function(auth) { 

var to = '[email protected]', 
    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); 
}); 
}; 

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

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 =电子邮件

var to = '[email protected]', 
    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'电子邮件'的方式是错误的,但我不知道它应该如何

+0

链接到您使用的软件包? – Nonemoticoner

+0

我正在使用这两个: “google-auth-library”:“^ 0.9.8” “googleapis”:“^ 13.0.0” –

回答

1

userId-字段的值必须是发件人的电子邮件地址(或简称me), auth -object必须在auth字段中传递,并且该消息应该在resource-字段中传递。您的消息在内容有效之前缺少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); 
}); 
}; 
+1

它工作完美,谢谢Tholle。也作解释。 –

+0

@DanielMarín太棒了!没问题。 :) – Tholle

+0

Tholle你知道我在哪里可以找到哪些属性的文档,我可以通过该json吗? (我作为传递函数中的一个参数传递的)..我一直没有找到它.. –

相关问题