API JavaMail - Authentification

Dans les chapitres précédents Vérification des e - mails et récupération des e - mails , nous avons transmis les informations d'identification (mot de passe de l'annonce de l'utilisateur) avec l'hôte, lors de la connexion au magasin de votre boîte aux lettres. Au lieu de cela, nous pouvons configurer les propriétés pour avoir l'hôte et informer la session de votre instance Authenticator personnalisée. Ceci est illustré dans l'exemple ci-dessous:

Créer une classe Java

Nous modifierons notre CheckingMails.java à partir du chapitre Vérifier les e-mails . Son contenu est comme ci-dessous:

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

   }

}
Vous pouvez activer le débogage en décommentant l'instruction emailSession.setDebug (true);

Compiler et exécuter

Maintenant que notre classe est prête, compilons la classe ci-dessus. J'ai enregistré la classe CheckingMails.java dans le répertoire:/home/manisha/JavaMailAPIExercise. Nous aurions besoin des jars javax.mail.jar et activation.jar dans le classpath. Exécutez la commande ci-dessous pour compiler la classe (les deux fichiers JAR sont placés dans le répertoire / home / manisha /) à partir de l'invite de commande:

javac -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: CheckingMails.java

Maintenant que la classe est compilée, exécutez la commande ci-dessous pour exécuter:

java -cp /home/manisha/activation.jar:/home/manisha/javax.mail.jar: CheckingMails

Vérifier la sortie

Vous pouvez voir un message similaire à celui ci-dessous sur la console de commande:

messages.length---3
---------------------------------
Email Number 1
Subject: Today is a nice day
From: XYZ <[email protected]>
Text: [email protected]
---------------------------------
Email Number 2
Subject: hiiii....
From: XYZ <[email protected]>
Text: [email protected]
---------------------------------
Email Number 3
Subject: helloo
From: XYZ <[email protected]>
Text: [email protected]