Проблемы с выбором перенаправленной почты из папки «Входящие» с использованием Microsoft Exchange в Java - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть рабочий код, который подключается к Microsoft Outlook и получает почту на основе некоторых фильтров. Он работает нормально с чтением прямой почтовой рассылки, но не может выбрать ту же почту, если она перенаправлена. Любая помощь приветствуется.

    List<SearchFilter> searchFilterCollection = new ArrayList<>();
    searchFilterCollection.add(new SearchFilter.IsGreaterThanOrEqualTo(ItemSchema.DateTimeReceived,localDate));

    // flag to pick only email which contains attachments
    searchFilterCollection.add(new SearchFilter.IsEqualTo(ItemSchema.HasAttachments, Boolean.TRUE));
    List<MetaInfoDTO> filterList = channel.getFilters();
    // for each channel
    log.info("Email from: {}", definedChannelFilter.getFieldData());
    EmailAddress manager = new EmailAddress("abcd@outlook.com");
    SearchFilter.IsEqualTo fromManagerFilter = new SearchFilter.IsEqualTo(EmailMessageSchema.Sender, manager);
    searchFilterCollection.add(fromManagerFilter);
    log.info("Email Subject: {}", definedChannelFilter.getFieldData());
    searchFilterCollection.add(new SearchFilter.ContainsSubstring(ItemSchema.Subject,"Subject ASDF"));
    log.info("Email Body Content: {}", definedChannelFilter.getFieldData());
    searchFilterCollection.add(new SearchFilter.ContainsSubstring(ItemSchema.Body,"Body Content if any"));

    return new SearchFilter.SearchFilterCollection(LogicalOperator.And, searchFilterCollection);        

1 Ответ

1 голос
/ 13 апреля 2020

Вы должны вернуться к фильтрам в вашем коде.

Вот мой код для чтения вложенных писем, и я могу печатать переадресованные письма с вложениями.

private static void readAttachmentEmail(ExchangeService service) throws Exception {
        // Bind to the Inbox.
        Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox);
        ItemView view = new ItemView(5);
        List<SearchFilter> searchFilterCollection = new ArrayList<>();
        // flag to pick only email which contains attachments
        searchFilterCollection.add(new SearchFilter.IsEqualTo(ItemSchema.HasAttachments, Boolean.TRUE));
        // for each channel
        EmailAddress manager = new EmailAddress("manager@email.com");
        SearchFilter.IsEqualTo fromManagerFilter = new SearchFilter.IsEqualTo(EmailMessageSchema.Sender, manager);
        searchFilterCollection.add(fromManagerFilter);
        //searchFilterCollection.add(new SearchFilter.ContainsSubstring(ItemSchema.Subject,"Subject ASDF"));
        //searchFilterCollection.add(new SearchFilter.ContainsSubstring(ItemSchema.Body,"Body Content if any"));
        SearchFilter finalSearchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, searchFilterCollection);
        service.findItems(inbox.getId(), finalSearchFilter, view).forEach(item->{
            try {
                System.out.println("id==========" + item.getId());
                System.out.println("sub==========" + item.getSubject());
            } catch (ServiceLocalException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...