package javacodebook.misc.mail_check; import java.util.*; import javax.mail.*; import javax.mail.event.*; import javax.activation.*; public class MailChecker { private String user; private String password; private String host; public void setUser(String user) { this.user = user; } public void setPassword(String password) { this.password = password; } public void setHost(String host) { this.host = host; } public void checkNewMail() { try { Properties props = System.getProperties(); // Es wird eine Mail-Session angelegt. Session session = Session.getDefaultInstance(props, null); // Ein Store wird geholt. In diesem Falle ein // IMAP-Store. Store store = session.getStore("imap"); // Die Verbindung zum Store wird hergestellt. store.connect(host, user, password); // Ein Ordner wird im Store geöffnet. Ist in // diesem Falle der ROOT-Folder. Folder inbox = store.getFolder("INBOX"); // Der Ordner wird geöffnet und ein Listener, welcher // auf das Eintreffen neuer Mails horcht, wird // an den Ordner gehängt. inbox.open(Folder.READ_WRITE); inbox.addMessageCountListener(new MailNotifierer()); // Jede Minute wird die aktuelle Anzahl an // Nachrichten im geöffneten Ordner abgefragt. // Erst durch diese explizite Abfrage werden // evtl. neu eingetroffene Mails entdeckt. while (true) { System.out.println("Neue Nachrichten?"); System.out.println(inbox.getMessageCount()); Thread.sleep(1000*60); // 1 Minute warten } } catch (Exception ex) { ex.printStackTrace(); } } } --- Neue Klasse --- package javacodebook.misc.mail_check; import javax.mail.Message; import javax.mail.event.*; /** * Horcht auf einem Mail-Folder, ob neue Mails eingetroffen * sind. */ public class MailNotifierer extends MessageCountAdapter { /** * Neu eingetroffene Mails werden gezählt und die * Anzahl auf der Konsole ausgegeben */ public void messagesAdded(MessageCountEvent ev) { Message msg[] = ev.getMessages(); System.out.println("Sie haben " + msg.length + " neue Mails"); } } --- Neue Klasse --- package javacodebook.misc.mail_check; public class Starter { /** Creates a new instance of Starter */ public Starter() { } public static void main(String[] args) { if (args.length != 3) { System.out.println("Benutzung: monitor "); } else { MailChecker checker = new MailChecker(); checker.setHost(args[0]); checker.setUser(args[1]); checker.setPassword(args[2]); checker.checkNewMail(); } } }