IMAPFolder getSortedMessages не работает с Liferay/Tomcat, но работает с обычным приложением Java

Я пытаюсь создать конечную точку API для получения электронных писем для определенного пользователя через Liferay / Tomcat. Это код, который я написал с помощью Java Mail:

      Session session = Session.getDefaultInstance(properties, null);
session.setDebug(false);

try {
    Store store = session.getStore(protocol);
    store.connect(host, userName, password);
    // opens the inbox folder
    // Folder folderInbox = store.getFolder("INBOX");
    IMAPFolder folderInbox = (IMAPFolder) store.getFolder("INBOX");
    folderInbox.open(Folder.READ_ONLY);

    // fetches new messages from server
    SortTerm[] sortTerms = new SortTerm[2];
    sortTerms[0] = SortTerm.REVERSE;
    sortTerms[1] = SortTerm.DATE;
    // getSortedMessages does not work
    Message[] messages = folderInbox.getSortedMessages(sortTerms);
    // getMessages works
    // Message[] messages = folderInbox.getMessages();

    int msgCount = folderInbox.getUnreadMessageCount();
    LOGGER.error("msgCount - {}", msgCount);

} catch (NoSuchProviderException ex) {
    LOGGER.error("No provider for protocol: " + protocol);
} catch (MessagingException ex) {
    LOGGER.error("Could not connect to the message store");
} catch (Exception e) {
    LOGGER.error("some other error");
}

Я импортировал javax.mail в свой файл pom.xml. Я пытаюсь использовать getSortedMessages, чтобы сначала получить новейшие электронные письма. Я постоянно получаю: com.sun.mail.imap.IMAPFolder.getSortedMessages ([Lcom / sun / mail / imap / SortTerm;) [Ljavax / mail / Message; метод не найден.

Если я использую getMessages, он работает нормально, сначала отправляя мне самые старые электронные письма. Однако, когда я помещаю этот код в обычное приложение Java (не имеющее отношения к Spring, Tomcat или Liferay) с ресурсами javax.mail.jar и Activation.jar в моем пути к классам, getSortedMessages отлично работает, давая мне электронные письма с Новички вперед.

Я не могу понять, чего не хватает в моей сборке Tomcat / Maven? Нужна ли мне еще одна зависимость? Кроме того, getMessages отлично работает с IMAPFolder, как и другие методы, такие как getUnreadMessageCount (). Это не значит, что он не может найти сам IMAPFolder. Просто getSortedMessages исчезло.

1 ответ

Мне кажется, что версия JavaMail, которую вы использовали для компиляции своего материала, и та, которая пришла / была установлена ​​с вашим Tomcat, не совпадают.

SortTerm поставляется с JavaMail 1.4.4, а также IMAPFolder.getSortedMessages(), поэтому я предполагаю, что ваш Tomcat использует более старую версию.

Скорее всего, вы запускали автономный код из среды IDE или с помощью инструмента сборки, и там используется версия для компиляции.

Другие вопросы по тегам