Библиотека для IMAP IDLE
Я ищу библиотеку Java, которая помогает мне использовать IMAP и предпочтительно IDLE.
Мне нужно написать приложение Java, которое уведомляется и получает новую электронную почту, используя SSL. Приложение проверит почтовый ящик учетной записи, размещенной на hMailServer.
До сих пор я смотрел на:
Apache Commons Imap, но, похоже, он не реализует IDLE.
JavaPushMail, но он недостаточно документирован (возможно, я смогу разобраться, но я не уверен, что мои преемники будут так же довольны).
Javamail, их IMAPFolder кажется хорошим выбором, но у меня мало времени, и написание стабильной библиотеки для этого займет время.
Chilkatsoft - это библиотека за 199 долларов, она немного дорогая (я знаю, бесплатный и хороший надежный код всегда легко найти:) Плюс, я не уверен, что он обрабатывает IDLE.
Я мог бы пойти на решение, которое опрашивает входящие, если оно задокументировано и стабильно.
Я был бы признателен за пример кода, библиотеку или толчок в правильном направлении.
Извините за все "я" и заранее спасибо.
3 ответа
Я пошел дальше и использовал Javamail. Просто подумайте, что это странно, что для него еще не написана достойная оболочка / клиент. Ну хорошо, не может иметь все это. Спасибо за ответ, Конор Шерман.
Я не работал ни с одной из упомянутых вами библиотек, кроме Javamail, но могу за это поручиться. Мне пришлось написать приложение, которое опрашивает сервер обмена и анализирует всю новую почту во входящих. Вот фрагмент кода, используемого в этом проекте. Я сделал все опросы в приложении, поэтому я не смотрел на push-уведомления с сервера или что-то еще. Я знаю, что это не совсем то, о чем вы просили, но я надеюсь, что это шаг в правильном направлении.
import java.util.Properties;
import javax.mail.*
import javax.mail.search.FlagTerm;
public class Driver {
public static void main(String[] args){
// Create properties (disable security checks on server)
Properties props = new Properties();
props.put("mail.imaps.ssl.checkserveridentity", "false");
props.put("mail.imaps.ssl.trust", "*");
// Get session
Session session = Session.getDefaultInstance(props, null);
try{
// Get the store
Store store = session.getStore("imaps");
store.connect("servername", "username", "password");
//connection configuration
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
//get all unread messages in the inbox
FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
Message[] messages = folder.search(ft);
for (int i = messages.length -1; i>=0; i--) {
messages[i].setFlag(Flags.Flag.SEEN, true);
}
// Close connection
folder.close(false);
store.close();
}
catch(Exception e){
}
}
}
Я не использовал его сам, но эта библиотека выглядит хорошо:
https://github.com/MailCore/mailcore2
MailCore 2 предоставляет простой и асинхронный API для работы с почтовыми протоколами IMAP, POP и SMTP. API был переработан с нуля.