2014-08-08 3 views
12

Я пытаюсь отправить письмо через Google API.Не удалось отправить почту через google api в nodejs

Я использую googleapis для доступа к API Google в node.js.

Моя проблема заключается в том, что, когда я пытаюсь отправить простую почту, без вложений, я получаю следующее сообщение об ошибке:

'raw' RFC822 payload message string or uploading message via /upload/* URL required

Я не определил в моей просьбе, что есть вложение, и я не» t видеть ошибки в адресах электронной почты.

Пожалуйста, помогите.

Мой код:

var google = require('googleapis'); 
    var gmailClass = google.gmail('v1'); 

    var email_lines = []; 

    email_lines.push("From: \"Some Name Here\" <[email protected]>"); 
    email_lines.push("To: [email protected]"); 
    email_lines.push('Content-type: text/html;charset=iso-8859-1'); 
    email_lines.push('MIME-Version: 1.0'); 
    email_lines.push("Subject: New future subject here"); 
    email_lines.push(""); 
    email_lines.push("And the body text goes here"); 
    email_lines.push("<b>And the bold text goes here</b>"); 

    var email =email_lines.join("\r\n").trim(); 

    var base64EncodedEmail = new Buffer(email).toString('base64'); 

    gmailClass.users.messages.send({ 
     auth: OAuth2Client, 
     userId: "me", 
     message: 
     { 
      raw: base64EncodedEmail 
     }   
     }, 
    function(err, results){}); 
+0

Вы пытались сделать «base64EncodedEmail» url-safe? Пример: 'base64EncodedEmail.replace (/ \ +/g, '-'). Replace (/ \ // g, '_')' – mscdex

+0

@mscdex, он изменил детали в строке, но я все равно получил ту же ошибку –

+0

I имеют ту же проблему. Швы API должны отвечать одинаково независимо от того, что я отправляю. –

ответ

12

были внесены изменения в версии 1.0.3 от Google API. Попробуйте использовать следующий синтаксис:

gmailClass.users.messages.send({ 
    auth: OAuth2Client, 
    userId: "me", 
    resource: 
    { 
     raw: base64EncodedEmail 
    }   
    } 

Убедитесь, что base64EncodedEmail безопасен. Вы можете использовать код base64EncodedEmail.replace(/\+/g, '-').replace(/\//g, '_'), указанный mscdex. Этот синтаксис работал для v. 1.0.11

+0

Это работает !!! Благодаря!!!! –

+0

@HanochGiner, если все настроено, не могли бы вы отметить это как принятый ответ? – user1445240

+0

отмечен как ответ, спасибо! –