API JavaMail - Gestione quote

Una quota in JavaMail è un numero limitato o fisso o una quantità di messaggi in un archivio di posta elettronica. Ogni richiesta del servizio di posta viene conteggiata per la quota di chiamate API JavaMail. Un servizio di posta elettronica può applicare il seguente criterio di quota:

  • Dimensione massima dei messaggi di posta in uscita, inclusi gli allegati.

  • Dimensione massima dei messaggi di posta in arrivo, inclusi gli allegati.

  • Dimensione massima del messaggio quando un amministratore è un destinatario

Per la gestione delle quote JavaMail ha le seguenti classi:

ClasseDescrizione
quota di classe pubblicaQuesta classe rappresenta un insieme di quote per una data root quota. Ogni radice della quota ha un set di risorse, rappresentato dalla classe Quota.Resource. Ogni risorsa ha un nome (ad esempio, "ARCHIVIAZIONE"), un utilizzo corrente e un limite di utilizzo. Questo ha un solo metodo setResourceLimit (nome stringa, limite lungo) .
classe statica pubblica Quota.ResourceRappresenta una singola risorsa in una radice della quota.
interfaccia pubblica QuotaAwareStoreUn'interfaccia implementata da negozi che supportano le quote. I metodi getQuota e setQuota supportano il modello quota definito dall'estensione IMAP QUOTA. GmailSSLStore, GmailStore, IMAPSSLStore, IMAPStore sono le classi di implementazione note di questa interfaccia.

Vediamo un esempio nelle sezioni seguenti che controlla il nome dell'archiviazione della posta, il limite e il suo utilizzo.

Crea classe Java

Crea un file di classe java QuotaExample, i cui contenuti sono i seguenti:

package com.tutorialspoint;

import java.util.Properties;

import javax.mail.Quota;
import javax.mail.Session;
import javax.mail.Store;

import com.sun.mail.imap.IMAPStore;

public class QuotaExample 
{
   public static void main(String[] args) 
   {
      try 
      {
         Properties properties = new Properties();
         properties.put("mail.store.protocol", "imaps");
         properties.put("mail.imaps.port", "993");
         properties.put("mail.imaps.starttls.enable", "true");
         Session emailSession = Session.getDefaultInstance(properties);
         // emailSession.setDebug(true);

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

         //change the user and password accordingly
         store.connect("imap.gmail.com", "[email protected]", "*****");
         IMAPStore imapStore = (IMAPStore) store;
         System.out.println("imapStore ---" + imapStore);

         //get quota
         Quota[] quotas = imapStore.getQuota("INBOX");
         //Iterate through the Quotas
         for (Quota quota : quotas) {
            System.out.println(String.format("quotaRoot:'%s'",
               quota.quotaRoot));
            //Iterate through the Quota Resource
            for (Quota.Resource resource : quota.resources) {
               System.out.println(String.format(
                  "name:'%s', limit:'%s', usage:'%s'", resource.name,
                  resource.limit, resource.usage));
            }
         }
      } catch (Exception e) 
      {
         e.printStackTrace();
      }
   }
}

Ecco la connessione al servizio gmail tramite il server IMAP (imap.gmail.com), poiché IMAPStore implementa QuotaAwareStore. Una volta ottenuto l'oggetto Store, recupera l'array Quota e itera attraverso di esso e stampa le informazioni pertinenti.

Compila ed esegui

Ora che la nostra classe è pronta, compiliamo la classe precedente. Ho salvato la classe QuotaExample.java nella directory:/home/manisha/JavaMailAPIExercise. Avremmo bisogno dei jars javax.mail.jar e activation.jar nel classpath. Esegui il comando seguente per compilare la classe (entrambi i vasi sono posizionati nella directory / home / manisha /) dal prompt dei comandi:

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

Ora che la classe è compilata, esegui il comando seguente per eseguire:

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

Verifica output

Dovresti vedere un messaggio simile sulla console dei comandi:

imapStore ---imaps://abc%[email protected]
quotaRoot:''
name:'STORAGE', limit:'15728640', usage:'513'