API JavaMail - Gerenciamento de cotas

Uma cota em JavaMail é um número limitado ou fixo ou quantidade de mensagens em um armazenamento de e-mail. Cada solicitação de serviço de e-mail conta para a cota de chamadas de API JavaMail. Um serviço de e-mail pode aplicar o seguinte critério de cota:

  • Tamanho máximo das mensagens de e-mail enviadas, incluindo anexos.

  • Tamanho máximo das mensagens de correio recebidas, incluindo anexos.

  • Tamanho máximo da mensagem quando um administrador é um destinatário

Para gerenciamento de cotas, o JavaMail tem as seguintes classes:

Classe Descrição
cota de classe pública Esta classe representa um conjunto de cotas para uma determinada raiz de cota. Cada raiz de cota possui um conjunto de recursos, representado pela classe Quota.Resource. Cada recurso tem um nome (por exemplo, "ARMAZENAMENTO"), um uso atual e um limite de uso. Este tem apenas um método setResourceLimit (String name, long limit) .
public static class Quota.Resource Representa um recurso individual em uma raiz de cota.
interface pública QuotaAwareStore Uma interface implementada por Stores que suporta cotas. Os getQuota e setquota métodos suportar o modelo de quota definida pela extensão IMAP quota. GmailSSLStore, GmailStore, IMAPSSLStore, IMAPStore são as classes de implementação conhecidas desta interface.

Vamos ver um exemplo nas seções a seguir, que verifica o nome de armazenamento de correio, limite e seu uso.

Criar classe Java

Crie um arquivo de classe java QuotaExample, cujos conteúdos são os seguintes:

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

Aqui estão as conexões com o serviço gmail via servidor IMAP (imap.gmail.com), já que IMAPStore implementa o QuotaAwareStore. Depois de obter o objeto Store, busque o array Quota, itere por ele e imprima as informações relevantes.

Compilar e Executar

Agora que nossa classe está pronta, vamos compilar a classe acima. Salvei a classe QuotaExample.java no diretório:/home/manisha/JavaMailAPIExercise. Precisamos dos jars javax.mail.jar e activation.jar no classpath. Execute o comando abaixo para compilar a classe (ambos os jars são colocados no diretório / home / manisha /) no prompt de comando:

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

Agora que a classe está compilada, execute o comando abaixo para executar:

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

Verificar saída

Você deve ver uma mensagem semelhante no console de comando:

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