2012-07-06 10 views
5

Szukam biblioteki Java, która pomaga mi używać protokołu IMAP, a najlepiej IDLE.Biblioteka dla IMAP IDLE

Potrzebuję napisać aplikację Java, która jest powiadamiana o nowych wiadomościach e-mail i pobiera je za pomocą protokołu SSL. Aplikacja sprawdzi skrzynkę odbiorczą konta hostowanego przez hMailServer.

Dotychczas Sprawdziliśmy:

Apache Commons Imap ale nie wydaje się, aby wdrożyć bezczynny.

JavaPushMail ale nie jest to wystarczająco udokumentowane (może uda mi się go rozwiązać, ale nie jestem pewien, czy moi następcy będą zadowoleni).

Javamail, ich IMAPFolder wydaje się być dobrym wyborem, ale brakuje mi czasu i napisania stabilnej biblioteki, ponieważ zajmie to trochę czasu.

Chilkatsoft to biblioteka 199 $, jest trochę drogo (wiem, darmowy i niezawodny niezawodny kod jest zawsze łatwy do zdobycia :) Plus, nie jestem pewien, czy obsługuje on IDLE.

Mogłabym znaleźć rozwiązanie, które sonduje skrzynkę odbiorczą, jeśli jest udokumentowana i stabilna.

Doceniłbym przykładowy kod, bibliotekę lub popchnięcie w dobrym kierunku.

Przepraszamy za wszystkie "ja" i dzięki z góry.

Odpowiedz

2

Poszedłem dalej i użyłem Javamail. Po prostu myśl, że to dziwne, że żadne przyzwoite opakowanie/klient nie zostało jeszcze napisane. No cóż, nie mogę mieć wszystkiego. Dzięki za odpowiedź, Conor Sherman.

2

Nie współpracowałem z żadną biblioteką, o której wspomniałeś oprócz Javamail, ale mogę za nią ręczyć. Musiałem napisać aplikację, która odpytuje serwer wymiany i przeanalizuje wszystkie nowe wiadomości w skrzynce odbiorczej. Oto fragment kodu używanego w tym projekcie. Zrobiłem całą ankietę w aplikacji, więc nie szukałem powiadomień push z serwera ani nic. Wiem, że nie jest to dokładnie to, o co prosiłeś, ale mam nadzieję, że jest to krok we właściwym kierunku.

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){ 
     } 
    } 
} 
-1

Nie używałem go samodzielnie, ale ta biblioteka wygląda dobrze:

https://github.com/MailCore/mailcore2

MailCore 2 zapewnienie prostego i asynchronicznego API do pracy z protokołami e-mail IMAP, POP i SMTP. Interfejs API został przeprojektowany od podstaw.

+0

Czy to teraz można używać z java? – arnt

+0

@arnt istnieją dokumenty Java API. Wygląda na to, że można wywołać kod C++ za pośrednictwem java. Sądzę, że jest to użyteczne z java. Ale to nie jest czysta Java. Myślę, że musisz skompilować rdzeń dla każdej platformy. – guettli