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 или с помощью инструмента сборки, и там используется версия для компиляции.