【问题标题】:nodejs How to get gmail raw messages?nodejs如何获取gmail原始消息?
【发布时间】:2018-07-09 14:04:30
【问题描述】:

我正在尝试使用gmail api reference 中描述的格式的原始选项获取带有正文内容的完整电子邮件数据。它似乎不起作用。以下是我的代码:

function listMessages(auth) {
  var gmail = google.gmail('v1');
  var nextPageToken = null;

  gmail.users.messages.list({
    auth: auth,
    userId: 'me',
    pageToken: nextPageToken,
    q: ''
  }, function(err, response) {
    if (err) {
      console.log('The API returned an error: ' + err);
      return;
    }

    var msgs = response.messages;
    if (msgs.length == 0) {
      console.log('No messages found.');
    } else {
      console.log('Messages:');
      the_format = 'raw';
      for (var i = 0; i < msgs.length; i++) {
        var msg = msgs[i];
        console.log('- %s', msg.id);
        gmail.users.messages.get({
          auth: auth,
          userId: 'me',
          id: msg.id,
          format: the_format,
        }, function(err, response) {
          if (err) {
             console.log('The API returned an error: ' + err);
             return;
          }

          console.log(response);

        });
      }
    }
  });
}

这里是一个返回结果的例子。我没有看到原始字段,当我更改“格式”(原始或最小)时,总是返回相同的结果。

我在这里错过了什么?

{ id: '16xxxxxxxxxxxxxxxxxx',
  threadId: '161xxxxxxxxxxxxxxxx',
  labelIds: [ 'UNREAD', 'Label_44', 'CATEGORY_UPDATES' ],
  snippet: 'atom posted: &quot;Voici le 9e volet de notre rubrique À quoi tu joues ? Aujourd&#39;hui la Testing Team vous embarque au Japon, avec Sakura. S&#39;est perdu dans un manoir infernal, ou a défendu un',
  historyId: '11336356',
  internalDate: '1516xxxxxxxxx',
  payload:
   { partId: '',
     mimeType: 'multipart/alternative',
     filename: '',
     headers:
      [ [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object],
        [Object] ],
     body: { size: 0 },
     parts: [ [Object], [Object] ] },
  sizeEstimate: 98391 }

【问题讨论】:

  • 它在您问题中包含的链接中的 API Explorer 中对您有用吗?您可能必须以小写形式给出格式,即raw。
  • 我建议转到Users.messages.get Try-it 来测试您正在尝试做什么。提供 userId 和 id,然后有一个“格式”参数,您可以在其中选择使用完整、元数据、最小和原始。
  • 我的错误,我已经尝试了“原始”和“原始”以及“最小”或其他选项,但没有任何选项会改变结果。我总是收到相同的“完整”信息。我也尝试过使用 API Explorer 并且它可以工作。我希望原始消息格式像和电子邮件一样轻松重新导入。 python api 包也可以完美运行。 nodejs 有错误还是我错误地传递了格式选项?
  • 您有什么方法可以记录发出的请求吗?您的问题和this other question 表明Nodejs 库中可能存在错误。

标签: javascript node.js gmail-api


【解决方案1】:

你需要使用:

var msgs = response.data.messages;

代替:

var msgs = response.messages;

就是这样。

【讨论】:

    猜你喜欢
    • 2015-10-05
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    相关资源
    最近更新 更多