Как получить номер сообщения, что тип контента "multipart" из Gmail? - PullRequest
0 голосов
/ 14 мая 2019

Я хочу получить список номеров сообщений о том, что тип контента "multipart". Я пытался использовать javaxmail, он работает, но я не хочу получать сообщения, а затем выполнить фильтр.

 try {
  Session emailSession = Session.getDefaultInstance(this.setPropertiesParams());
  Store store = emailSession.getStore("imaps");
  store.connect(host, email, emailPassword);
  Folder emailFolder;
  emailFolder = store.getFolder("Documents");      
  emailFolder.open(Folder.READ_ONLY);
  SearchTerm andTerm = searchMessageByDate(fromDate, toDate);      
  Message[] messages = emailFolder.search(andTerm);
  Message[] finalMessages = emailFolder.search(new SubjectTerm("Scan de votre document"), messages);   

  for (Message message : finalMessages) {
        String contentType = message.getContentType();
        if (contentType.contains("multipart")) {
          Integer messageNumber = message.getMessageNumber();
          numberList.add(messageNumber);
        }
  }
  emailFolder.close(false);
  store.close();

Как это сделать.спасибо за любую помощь.

1 Ответ

0 голосов
/ 14 мая 2019

Вы можете реализовать новый подкласс SearchTerm, который делает это, но в любом случае, возможно, придется получить сообщение.Я не думаю, что вы можете избежать этого.

public class ContentTypeTerm extends SearchTerm {
    @Override
    public boolean match(Message msg) {
        try {
            return msg.isMimeType("multipart/*");
        } catch (MessagingException ex) {
            throw new RuntimeException(ex.getMessage());
        }
    }
}

ОБНОВЛЕНИЕ

Вы могли бы на самом деле использовать HeaderTerm:

SearchTerm[] terms = {
        searchMessageByDate(fromDate, toDate),
        new HeaderTerm("Content-Type", "multipart/.*")
    };
SearchTerm andTerm = new AndTerm(terms);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...