JavaMail API - Authentifizierung

In den vorherigen Kapiteln Überprüfen von E-Mails und Abrufen von E-Mails haben wir beim Herstellen einer Verbindung zum Speicher Ihres Postfachs Berechtigungsanmeldeinformationen (Benutzeranzeigenkennwort) zusammen mit dem Host übergeben. Stattdessen können wir die Eigenschaften so konfigurieren , dass sie den Host enthalten, und der Sitzung Ihre benutzerdefinierte Authenticator-Instanz mitteilen. Dies wird im folgenden Beispiel gezeigt:

Erstellen Sie eine Java-Klasse

Wir werden unsere CheckingMails.java aus dem Kapitel Checking Emails ändern . Sein Inhalt ist wie folgt:

package com.tutorialspoint;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.PasswordAuthentication;
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.pop3s.host", host);
      properties.put("mail.pop3s.port", "995");
      properties.put("mail.pop3s.starttls.enable", "true");

      // Setup authentication, get session
      Session emailSession = Session.getInstance(properties,
         new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
               return new PasswordAuthentication(
                  "[email protected]", "manisha123");
            }
         });
      // emailSession.setDebug(true);

      // create the POP3 store object and connect with the pop server
      Store store = emailSession.getStore("pop3s");

      store.connect();

      // 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);

   }

}
Sie können das Debuggen aktivieren, indem Sie die Anweisung emailSession.setDebug (true) auskommentieren.

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 wird eine ähnliche Meldung wie unten angezeigt:

messages.length---3
---------------------------------
Email Number 1
Subject: Today is a nice day
From: XYZ <[email protected]>
Text: javax.mail.internet.MimeMultipart@45f676cb
---------------------------------
Email Number 2
Subject: hiiii....
From: XYZ <[email protected]>
Text: javax.mail.internet.MimeMultipart@37f12d4f
---------------------------------
Email Number 3
Subject: helloo
From: XYZ <[email protected]>
Text: javax.mail.internet.MimeMultipart@3ad5ba3a