API JavaMail - Gestión de cuotas

Una cuota en JavaMail es un número o cantidad limitada o fija de mensajes en una tienda de correo electrónico. Cada solicitud de servicio de correo cuenta para la cuota de llamadas a la API de JavaMail. Un servicio de correo electrónico puede aplicar el siguiente criterio de cuota:

  • Tamaño máximo de los mensajes de correo salientes, incluidos los archivos adjuntos.

  • Tamaño máximo de los mensajes de correo entrantes, incluidos los archivos adjuntos.

  • Tamaño máximo de mensaje cuando un administrador es un destinatario

Para la gestión de cuotas, JavaMail tiene las siguientes clases:

ClaseDescripción
Cuota de clase públicaEsta clase representa un conjunto de cuotas para una raíz de cuota determinada. Cada raíz de cuota tiene un conjunto de recursos, representados por la clase Quota.Resource. Cada recurso tiene un nombre (por ejemplo, "ALMACENAMIENTO"), un uso actual y un límite de uso. Esto solo tiene un método setResourceLimit (nombre de cadena, límite largo) .
Quota.Resource de clase estática públicaRepresenta un recurso individual en una raíz de cuota.
interfaz pública QuotaAwareStoreUna interfaz implementada por tiendas que admiten cuotas. Los métodos getQuota y setQuota admiten el modelo de cuota definido por la extensión IMAP QUOTA. GmailSSLStore, GmailStore, IMAPSSLStore, IMAPStore son las clases de implementación conocidas de esta interfaz.

Veamos un ejemplo en las siguientes secciones que verifica el nombre de almacenamiento de correo, el límite y su uso.

Crear clase Java

Crea un archivo de clase java QuotaExample, cuyo contenido es el siguiente:

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

Aquí está la conexión al servicio de gmail a través del servidor IMAP (imap.gmail.com), ya que IMAPStore implementa QuotaAwareStore. Una vez que obtenga el objeto Store, busque la matriz Quota, repita e imprima la información relevante.

Compilar y ejecutar

Ahora que nuestra clase está lista, compilemos la clase anterior. He guardado la clase QuotaExample.java en el directorio:/home/manisha/JavaMailAPIExercise. Necesitaríamos los jars javax.mail.jar y activación.jar en la ruta de clases. Ejecute el siguiente comando para compilar la clase (ambos frascos se colocan en el directorio / home / manisha /) desde el símbolo del sistema:

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

Ahora que la clase está compilada, ejecute el siguiente comando para ejecutar:

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

Verificar salida

Debería ver un mensaje similar en la consola de comandos:

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