выброс почтового сообщения aspose Операция 'FetchMessage' прекращена.Тайм-аут "100000" был достигнут - PullRequest
0 голосов
/ 02 марта 2019

Я разрабатываю RPA для автоматизации электронной почты.Я использую почтовый сервис Aspose.Я получаю исключение Timeout с перерывами. Хотя есть API-интерфейс setTimeout (), который можно использовать для ожидания истекшего времени.

Насколько я понимаю, из-за увеличения количества сообщений в почтовом ящике это занимает больше временисобрать / заполнить почтовое сообщение.

Есть ли возможность использовать концепцию разбиения на страницы, чтобы я мог получать ограниченное количество почтовых сообщений за один раз?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

@ Afsar,

POP3 - старый протокол, и он НЕ активно развивается в настоящее время.Лучше использовать IMAP вместо него.POP3 не позволяет осуществлять извлечение краткой информации о почтовых сообщениях в качестве групповой операции.Вот почему, когда мы получаем список информации о сообщениях, мы должны делать с сервером то же количество запросов, что и количество сообщений в списке.Это приводит к длительному времени эксплуатации.Чтобы избежать этого, мы реализовали возможность загрузки информации сообщений позже по запросу.Более подробную информацию можно загрузить с помощью метода LoadMessageInfoList.См. Фрагмент кода ниже.

Pop3Client client = createPop3Client();
try {
    Pop3MessageInfoCollection messageInfoCol = client.listMessages(Pop3ListFields.SequenceNumber);
    int pageSize = 20;
    List<List<Pop3MessageInfo>> pages = new ArrayList<List<Pop3MessageInfo>>();
    List<Pop3MessageInfo> page = new ArrayList<Pop3MessageInfo>();
    for (int i = 0; i < messageInfoCol.size(); i++)
    {
        Pop3MessageInfo messageInfo = messageInfoCol.get_Item(i);
        if (page.size() < pageSize)
        {
            page.add(messageInfo);
            continue;
        }
        else
        {
            client.loadMessageInfoList(page);
            pages.add(page);
            page.clear();
            page.add(messageInfo);
        }
    }
    if (page.size() > 0)
    {
        client.loadMessageInfoList(page);
        pages.add(page);
    }
} finally {
    client.dispose();
}

Ниже приведен код на основе IMAP:

    ImapClient client = new ImapClient("exchange.domain.com", "username", "password");

    int itemsPerPage = 500;

    client.selectFolder(ImapFolderInfo.IN_BOX);

    List<ImapPageInfo> pages = new ArrayList<ImapPageInfo>();

    ImapPageInfo pageInfo = client.listMessagesByPage(itemsPerPage);

    System.out.println("Pages: " + pageInfo.getTotalCount());

    pages.add(pageInfo);

    int iPageCount = 1;
    while (!pageInfo.getLastPage())
    {
        pageInfo = client.listMessagesByPage(pageInfo.getNextPage());

        pages.add(pageInfo);

        iPageCount += 1;

        System.out.println(iPageCount);
    }

    int retrievedItems = 0;
    for (ImapPageInfo folderCol : pages)
        retrievedItems += folderCol.getItems().size();
    System.out.println(retrievedItems);
0 голосов
/ 02 марта 2019

@ Afsar,

Я заметил проблему, которой вы поделились, и прошу вас предоставить нам исходные файлы вместе с образцом кода и подробностями среды.Я также советую сначала вам попробовать сначала использовать последнюю версию Aspose.Email 19.2 с вашей стороны.

Я работаю разработчиком / евангелистом поддержки в Aspose.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...