/**
   * Send an email from the user's mailbox to its recipient.
   *
   * @param service Authorized Gmail API instance.
   * @param userId User's email address. The special value "me" can be used to indicate the
   *     authenticated user.
   * @param email Email to be sent.
   * @throws MessagingException
   * @throws IOException
   */
  public String sendMessage(String to, String from, String subject, String body)
      throws MessagingException, IOException {

    Gmail service =
        new Gmail.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
            .setApplicationName("Gmail Quickstart")
            .build();
    MimeMessage email = createMimeMessage(to, from, subject, body);
    Message message = createMessageWithEmail(email);
    message = service.users().messages().send("me", message).execute();

    System.out.println("Message id: " + message.getId());
    System.out.println(message.toPrettyString());
    if (message.getId() != null) {
      return "success";
    } else {
      return "fail";
    }
  }
  @Override
  public void crawl(Map<String, Object> confidg) {

    try {
      Gmail service = GmailOAuth2Service.getGmailService();
      final String userId = "me";

      ListMessagesResponse response = service.users().messages().list(userId).execute();

      List<Message> messages = new ArrayList<>();

      while (response.getMessages() != null) {
        messages.addAll(response.getMessages());

        if (response.getNextPageToken() != null) {
          String pageToken = response.getNextPageToken();
          response = service.users().messages().list(userId).setPageToken(pageToken).execute();
        } else {
          break;
        }
      }

      for (Message message : messages) {

        try {
          final Message msg = service.users().messages().get(userId, message.getId()).execute();

          System.out.println(msg.toPrettyString());

        } catch (GoogleJsonResponseException ex) {
          System.out.println("Erro na thread id: " + message.getId());
          System.out.println("Erro: " + ex.getMessage());
        }
      }

    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }