【问题标题】:How to get next page gmails in gmail API?如何在 gmail API 中获取下一页 gmail?
【发布时间】:2020-10-27 02:49:54
【问题描述】:

好的,我只能成功获得 20 封电子邮件的列表。为了检索下一页,我应该在此代码中进行哪些更改。

然后我还想显示各个电子邮件的附件。但首选是获取下一页,我知道我必须使用 pagetoken 但我无法实现它。

 const getMessages = (labelIds = "INBOX") => {
    // Get List of 20 message's Id
    const request = window.gapi.client.gmail.users.messages.list({
      userId: "me",
      labelIds: labelIds,
      maxResults: 20,
     
    });

    setMessages([]);

    // Send Id list to getMessagesData to get Message Data foreach Id
    request.execute(getMessagesData);
  };

  const getMessagesData = (response) => {
    const messages = response.result.messages ? response.result.messages : [];

    messages.forEach((message) => {
      window.gapi.client.gmail.users.messages
        .get({
          userId: "me",
          id: message.id,
        })
        .then(
          (response) => {
            setMessages((messages) => [...messages, response.result]);
            
          },
          (err) => {
            console.error("getMessagesData error", err);
          }
        );
    });
  };

  const getOneMessage = (messageId) => {
    window.gapi.client.gmail.users.messages
      .get({
        userId: "me",
        id: messageId,
      })
      .then(
        (response) => {
          setMessage(response.result);
        },
        (err) => {
          console.error("getMessage error", err);
        }
      );
  };

【问题讨论】:

    标签: javascript reactjs google-api gmail-api


    【解决方案1】:

    你快到了:

    const request = window.gapi.client.gmail.users.messages.list({
              userId: "me",
              labelIds: labelIds,
              maxResults: 20,
              pageToken : pageToken
            });
    

    只需将 pageToken 添加到您的查询中。

    当您请求 20 条消息时,将有一个 pageToken 存储在答案的某处。保存它并在参数中使用新的 pageToken 重复相同的请求

    https://developers.google.com/gmail/api/v1/reference/users/messages/list#parameters

    【讨论】:

    • 嘿,我尝试添加它,但那样它不起作用。
    • 应该可以,如果你使用pagetoken会发生什么?
    • 我确实获得了页面令牌,但如何递归打印该电子邮件?
    • 递归获取所有电子邮件只需调用一个do-while循环:do { fetch and store your emails;设置新的pageToken; }while(pageToken != null);
    猜你喜欢
    • 2017-01-10
    • 2018-12-23
    • 2015-02-26
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2015-01-26
    相关资源
    最近更新 更多