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:
Classe | Descrizione |
---|---|
quota di classe pubblica | Questa 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.Resource | Rappresenta una singola risorsa in una radice della quota. |
interfaccia pubblica QuotaAwareStore | Un'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'