2012-07-06 12 views
5

Ich bin auf der Suche nach einer Java-Bibliothek, die mir hilft, IMAP und vorzugsweise IDLE zu verwenden.Bibliothek für IMAP IDLE

Ich muss eine Java-Anwendung schreiben, die benachrichtigt wird und neue E-Mails mit SSL abruft. Die Anwendung überprüft den Posteingang eines Kontos, das von hMailServer gehostet wird.

Bisher habe ich betrachtet:

Apache Commons Imap aber es scheint nicht IDLE zu implementieren.

JavaPushMail aber es ist nicht ausreichend dokumentiert (ich könnte es ausarbeiten, aber ich bin mir nicht sicher, ob meine Nachfolger so zufrieden sein werden).

Javamail, scheint ihre IMAPFolder wie eine gute Wahl, aber ich bin knapp an der Zeit und das Schreiben einer stabilen Bibliothek dafür wird Zeit brauchen.

Chilkatsoft ist eine $ 199-Bibliothek, es ist ein bisschen teuer (Ich weiß, frei und guter zuverlässiger Code ist immer Leichtigkeit zu kommen :) Plus, ich bin mir nicht sicher, dass IDLE behandelt.

Ich könnte für eine Lösung gehen, die den Posteingang abfragt, wenn es dokumentiert und stabil ist.

Ich würde einige Beispielcode, eine Bibliothek oder einen Stoß in die richtige Richtung schätzen.

Sorry für alle "Ich" und danke im Voraus.

Antwort

2

Ich ging voran und verwendete Javamail. Ich denke nur, dass es seltsam ist, dass kein anständiger Wrapper/Client dafür geschrieben wurde. Naja, kann nicht alles haben. Danke für die Antwort, Conor Sherman.

2

Ich habe mit keiner der Bibliotheken, die Sie erwähnt haben, außer Javamail gearbeitet, aber ich kann dafür bürgen. Ich musste eine Anwendung schreiben, die einen Exchange-Server abfragt und alle neuen Nachrichten in einem Posteingang analysiert. Hier ist ein Ausschnitt des in diesem Projekt verwendeten Codes. Ich habe alle In-App-Abfragen durchgeführt, also habe ich keine Push-Benachrichtigungen vom Server oder irgendetwas untersucht. Ich weiß, dass dies nicht genau das ist, wonach Sie gefragt haben, aber ich hoffe, dass es ein Schritt in die richtige Richtung ist.

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

Ich habe es selbst nicht verwendet, aber diese Bibliothek sieht gut aus:

https://github.com/MailCore/mailcore2

MailCore 2 bieten eine einfache und asynchrone API mit E-Mail-Protokolle IMAP, POP und SMTP zu arbeiten. Die API wurde von Grund auf neu gestaltet.

+0

Ist das jetzt von Java nutzbar? – arnt

+0

@arnt gibt es Java-API-Dokumente. Sieht so aus, als ob es möglich ist, den C++ Code über Java aufzurufen. Ich denke, dass es von Java verwendbar ist. Aber es ist kein reines Java. Ich denke, Sie müssen den Kern für jede Plattform zusammenstellen. – guettli