【问题标题】:Recipient address required gmail api with JavaScript收件人地址需要带有 JavaScript 的 gmail api
【发布时间】:2020-08-23 11:52:30
【问题描述】:

我正在尝试通过 Javascript 客户端中的 Gmail API 发送带有 jpeg 文件的消息。 但我收到错误:需要收件人地址。目前我写的代码如下:

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”,消息:“需要收件人地址。 我究竟做错了什么?如果有人能对此有所了解,将不胜感激!

【问题讨论】:

    标签: javascript node.js typescript gmail-api


    【解决方案1】:

    我认为可以使用您的请求正文。那么这个修改怎么样呢?

    发件人:

    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 发送邮件。

    参考资料:

    【讨论】:

      猜你喜欢
      • 2019-09-21
      • 2018-08-14
      • 2019-10-30
      • 2015-07-22
      • 2020-07-07
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多