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:
Clase | Descripción |
---|---|
Cuota de clase pública | Esta 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ública | Representa un recurso individual en una raíz de cuota. |
interfaz pública QuotaAwareStore | Una 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'