Wie schreiben Sie java-Programm zum Lesen neuer E-Mails aus jedem emailid
Hallo ich möchte ein java-Programm schreiben, wo ich meine E-Mail-id und Passwort. und ich will Lesen, alle neuen, ungelesenen Nachrichten, die angekommen sind, die E-Mail-id. Ich donot wissen, wie Sie schreiben, Programm für die.
Den unten Programm funktioniert gut für gmail. aber es funktioniert nicht für yahoomail, weil für yahoo pop3 ist nicht konfiguriert. Ich möchte einen generischen code für alle E-Mail-id.
import java.io.*;
import java.util.*;
import javax.mail.*;
public class ReadMail {
public static void main(String args[]) throws Exception {
// String host = "pop.gmail.com";
// String user = "xyz";
// String password = "12345";
//Get system properties
Properties properties = System.getProperties();
//Get the default Session object.
Session session = Session.getDefaultInstance(properties, null);
//Get a Store object that implements the specified protocol.
Store store = session.getStore("pop3s");
//Connect to the current host using the specified username and password.
store.connect(host, user, password);
//Create a Folder object corresponding to the given name.
Folder folder = store.getFolder("inbox");
//Open the Folder.
folder.open(Folder.READ_ONLY);
Message[] message = folder.getMessages();
//Display message.
for (int i = 0; i < message.length; i++) {
System.out.println("------------ Message " + (i + 1) + " ------------");
System.out.println("SentDate : " + message[i].getSentDate());
System.out.println("From : " + message[i].getFrom()[0]);
System.out.println("Subject : " + message[i].getSubject());
System.out.print("Message : ");
InputStream stream = message[i].getInputStream();
while (stream.available() != 0) {
System.out.print((char) stream.read());
}
System.out.println();
}
folder.close(true);
store.close();
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie wissen, mehr als nur die login-pass. Dinge wie E-mail-server-Adresse, mail-server-Typ, port für verbindungen, etc.
Sie sollten wahrscheinlich check-out Java-Mail-API, oder Commons E-Mail.
UPD:
Erstellen Sie eine
Session
mitSession.getDefaultInstance()
- Methode (die nimmt VerbindungProperties
Objekt und authenticator), erhalten einStore
aus diesemSession
mitSession.getStore()
- Methode, erhalten eineFolder
aus, dass das Geschäft mitStore.getFolder("FOLDER_NAME")
Methode öffnenFolder
mitFolder.open(Folder.READ)
Methode, und erhalten Sie alle Nachrichten, mit so etwas wieMessage[] messages = inboxFolder.getMessages();
Ist, dass das, was Sie gesucht haben?
UPD2:
Gibt es einfach keine Möglichkeit zu schreiben ein generisches Programm, das funktioniert mit jedem mail-Anbieter, mit nur server-Pfad, Benutzer-id und Kennwort. Da verschiedene E-mail-Server sind anders konfiguriert. Sie sprechen Unterschiede Protokolle (imap/pop3/pop3-ssl), die auf verschiedenen ports. Es gibt immer einige Kerl, der so konfiguriert hat, dass seine E-mail-server zu sprechen, imap über ssl auf port 31337 nur, alle anderen ports und Protokolle sind verboten. Und dieser Kerl bricht Ihr Programm. Also musst du angeben, alle diese Eigenschaften in Ihrem
properties
Objekt. Schauen hier für Eigenschaften haben, müssen Sie angeben.UPD3:
Auf den zweiten Gedanken, Sie haben tatsächlich eine option. Nur versuchen Sie, eine Verbindung zum server über verschiedene Protokolle. Wenn das nicht hilft, starten, Durchlaufen ports. Die eine, die passt, ist Ihre Konfiguration. , Wenn das wirklich das, was Sie wollen.
Müssen Sie die javax.E-mail-Paket und die Dokumentation von it. Lesen Sie die Dokumentation. Dann wissen Sie.
Gibt es zwei Möglichkeiten, es zu tun:
1) Google bietet eine API zum zugreifen auf E-mail, die Sie nutzen könnten, die Bibliothek, die bietet mehr Kontrolle über Ihre E-mails. Siehe hier: http://code.google.com/apis/gmail/. In der gleichen Art und Weise versuchen, die für andere email-Provider.
2) Einfaches E-mail-client(man könnte es leicht googeln), aber Sie benötigen, zu betrachten Header zu erkennen, welche mails gelesen/ungelesen etc.
Benötigen Sie eine Registrierung, wo man die Eigenschaften für einen bestimmten E-mail-service.
Zum Beispiel, statt der Angabe eines pop3-host, könnten Sie den Namen ein .Eigenschaften-Datei enthält den host, den port, das Protokoll, etc...
Wenn Ihr .Eigenschaften-Datei enthält das Protokoll, zum Beispiel E-mail.store.protocol=pop3, könnten Sie eine Sitzung.getStore() (ohne argument), und der gleiche code könnte verwendet werden, für pop3, imap, pop3s, imaps.