Адрес получателя требуется gmail api с JavaScript - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь отправить сообщение с прикрепленным файлом jpeg через API Gmail на стороне клиента Javascript. Но у меня возникла ошибка: требуется адрес получателя. Код, который я написал до сих пор, выглядит следующим образом:

SendMails() {
    var img=getBase64();
    const mails = [
      'Content-Type: multipart/mixed; boundary="foo_bar_baz"\r\n',
      'MIME-Version: 1.0\r\n',
      'to: limon14203165@gmail.com\r\n',
      'from: liibd7@gmail.com\r\n',
      'subject: Subject Text\r\n\r\n',

      '--foo_bar_baz\r\n',
      'Content-Type: text/plain; charset="UTF-8"\r\n',
      'MIME-Version: 1.0\r\n',
      'Content-Transfer-Encoding: 7bit\r\n\r\n',

      'The actual message text goes here\r\n\r\n',

      '--foo_bar_baz\r\n',
      'Content-Type: image/jpeg\r\n',
      'MIME-Version: 1.0\r\n',
      'Content-Transfer-Encoding: base64\r\n',
      'Content-Disposition: attachment; filename="example.jpg"\r\n\r\n',

      img, '\r\n\r\n',

      '--foo_bar_baz--'
    ].join('');
    const path = 'upload/gmail/v1/users/me/messages/send?uploadType=multipart';
    const mail = btoa(mails).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');

    gapi.client.request({
      path: path,
      headers: {
        'Content-Type': 'message/rfc822'
        // mimeType: 'message/rfc822'
      },
      method: 'POST',
      body: {
        data: mail
      }
    }).then(response=> {
      console.log('Response:', response);
    }).catch(err => {
      console.log('Error:', err);
    });
  }

Это приводит к ответу с кодом ошибки 400, причина: «invalidArgument», сообщение: «Требуется адрес получателя. Что я делаю не так? был бы очень признателен, если бы кто-нибудь мог пролить свет на это!

1 Ответ

1 голос
/ 08 мая 2020

Думаю, что можно использовать тело вашего запроса. Так как насчет этой модификации?

От:

const path = 'upload/gmail/v1/users/me/messages/send?uploadType=multipart';
const mail = btoa(mails).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');

gapi.client.request({
  path: path,
  headers: {
    'Content-Type': 'message/rfc822'
    // mimeType: 'message/rfc822'
  },
  method: 'POST',
  body: {
    data: mail
  }
}).then(response=> {
  console.log('Response:', response);
}).catch(err => {
  console.log('Error:', err);
});

Кому:

const path = 'upload/gmail/v1/users/me/messages/send';  // Modified
// const mail = btoa(mails).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); // Deleted
gapi.client.request({
  path: path,
  headers: {'Content-Type': 'message/rfc822'},
  method: 'POST',
  body: mails  // Modified
}).then(response=> {
  console.log('Response:', response);
}).catch(err => {
  console.log('Error:', err);
});

Примечание:

  • Этот модифицированный скрипт предполагает, что ваш gapi.client можно использовать для отправки сообщения с помощью Gmail API.

Ссылки:

...