Не удалось отправить почту через google api в nodejs

Я пытаюсь отправить электронное письмо через Google API.

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

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

'raw' строка сообщения полезной нагрузки RFC822 или загрузка сообщения через / upload / * URL-адрес обязателен

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

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

Мой код:

    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){});

person Hanoch Giner    schedule 08.08.2014    source источник
comment
Вы пытались сделать base64EncodedEmail безопасным для URL? Пример: base64EncodedEmail.replace(/\+/g, '-').replace(/\//g, '_')   -  person mscdex    schedule 08.08.2014
comment
@mscdex он изменил части в строке, но я все равно получил ту же ошибку   -  person Hanoch Giner    schedule 08.08.2014
comment
У меня такая же проблема. API-интерфейс отвечает одинаково, независимо от того, что я отправляю.   -  person Eduárd Moldován    schedule 24.08.2014
comment
Я даже попытался отправить необработанное сообщение, которое я получил в ответ от самого API. У меня такое же сообщение об ошибке.   -  person Eduárd Moldován    schedule 24.08.2014
comment
Связано: stackoverflow .com / questions / 34546142 /   -  person Sergio    schedule 10.01.2017


Ответы (1)


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

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

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

person user1445240    schedule 01.09.2014
comment
Спасибо за публикацию! Было интересно, почему некоторые из моего кода перестали работать. Откуда вы узнали об этом обновлении API? Я спрашиваю, потому что даже в документации Google он по-прежнему указан как message, а не resource с 21.10.14: developers.google.com/gmail/api/v1/reference/users/messages/ - person rog; 22.10.2014