JavaMail API - Überprüfen von E-Mails
Bevor Sie mit diesem Kapitel fortfahren, müssen Sie zwei Aspekte verstehen. Sie sindCheck und Fetch.
CheckDas Senden einer E-Mail in JavaMail ist ein Prozess, bei dem wir den entsprechenden Ordner in der Mailbox öffnen und jede Nachricht abrufen. Hier überprüfen wir nur den Header jeder Nachricht, dh den Betreff Von, Bis . Inhalt wird nicht gelesen.
FetchDas Senden einer E-Mail in JavaMail ist ein Prozess, bei dem wir den entsprechenden Ordner in der Mailbox öffnen und jede Nachricht abrufen. Neben dem Header lesen wir auch den Inhalt, indem wir den Inhaltstyp erkennen.
Zum Überprüfen oder Abrufen einer E-Mail mithilfe der JavaMail-API benötigen wir POP- oder IMAP-Server. Zum Überprüfen und Abrufen der E-Mails werden Ordner- und Speicherklassen benötigt. Hier haben wir den POP3-Server von GMAIL (pop.gmail.com) verwendet. In diesem Kapitel erfahren Sie, wie Sie E-Mails mit der JavaMail-API abrufen. Das Abrufen wird in den folgenden Kapiteln behandelt. So überprüfen Sie E-Mails:
Holen Sie sich eine Sitzung
Erstellen Sie ein pop3 Store-Objekt und stellen Sie eine Verbindung zum Pop-Server her.
Ordnerobjekt erstellen. Öffnen Sie den entsprechenden Ordner in Ihrer Mailbox.
Erhalten Sie Ihre Nachrichten.
Schließen Sie die Store- und Folder-Objekte.
Erstellen Sie eine Java-Klasse
Erstellen Sie eine Java-Klassendatei CheckingMails, deren Inhalt wie folgt ist:
package com.tutorialspoint;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
public class CheckingMails {
public static void check(String host, String storeType, String user,
String password)
{
try {
//create properties field
Properties properties = new Properties();
properties.put("mail.pop3.host", host);
properties.put("mail.pop3.port", "995");
properties.put("mail.pop3.starttls.enable", "true");
Session emailSession = Session.getDefaultInstance(properties);
//create the POP3 store object and connect with the pop server
Store store = emailSession.getStore("pop3s");
store.connect(host, user, password);
//create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
System.out.println("messages.length---" + messages.length);
for (int i = 0, n = messages.length; i < n; i++) {
Message message = messages[i];
System.out.println("---------------------------------");
System.out.println("Email Number " + (i + 1));
System.out.println("Subject: " + message.getSubject());
System.out.println("From: " + message.getFrom()[0]);
System.out.println("Text: " + message.getContent().toString());
}
//close the store and folder objects
emailFolder.close(false);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String host = "pop.gmail.com";// change accordingly
String mailStoreType = "pop3";
String username = "[email protected]";// change accordingly
String password = "*****";// change accordingly
check(host, mailStoreType, username, password);
}
}
Kompilieren und ausführen
Nachdem unsere Klasse fertig ist, lassen Sie uns die obige Klasse kompilieren. Ich habe die Klasse CheckingMails.java im Verzeichnis gespeichert:/home/manisha/JavaMailAPIExercise. Wir müssten die Gläser javax.mail.jar und activation.jar in dem Classpath. Führen Sie den folgenden Befehl aus, um die Klasse (beide Jars befinden sich im Verzeichnis / home / manisha /) an der Eingabeaufforderung zu kompilieren:
javac -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: CheckingMails.java
Führen Sie nach dem Kompilieren der Klasse den folgenden Befehl aus, um Folgendes auszuführen:
java -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: CheckingMails
Überprüfen Sie die Ausgabe
Auf der Befehlskonsole sollte die folgende Meldung angezeigt werden:
messages.length---4
---------------------------------
Email Number 1
Subject: Test Mail--Fetch
From: <[email protected]>
Text: javax.mail.internet.MimeMultipart@327a5b7f
---------------------------------
Email Number 2
Subject: testing ----checking simple email
From: <[email protected]>
Text: javax.mail.internet.MimeMultipart@7f0d08bc
---------------------------------
Email Number 3
Subject: Email with attachment
From: <[email protected]>
Text: javax.mail.internet.MimeMultipart@30b8afce
---------------------------------
Email Number 4
Subject: Email with Inline image
From: <[email protected]>
Text: javax.mail.internet.MimeMultipart@2d1e165f
Hier haben wir die Anzahl der Nachrichten in der INBOX gedruckt, in diesem Fall 4. Wir haben auch Betreff, Von-Adresse und Text für jede E-Mail-Nachricht gedruckt.