JavaMail API - Управление квотами

Квота в JavaMail - это ограниченное или фиксированное количество или количество сообщений в хранилище электронной почты. Каждый запрос почтовой службы учитывается в квоте вызовов JavaMail API. Почтовый сервис может применять следующий критерий квоты:

  • Максимальный размер исходящих почтовых сообщений, включая вложения.

  • Максимальный размер входящих почтовых сообщений, включая вложения.

  • Максимальный размер сообщения, когда администратор является получателем

Для управления квотами JavaMail имеет следующие классы:

КлассОписание
квота публичного классаЭтот класс представляет набор квот для заданного корня квоты. У каждого корня квоты есть набор ресурсов, представленный классом Quota.Resource. У каждого ресурса есть имя (например, «ХРАНИЛИЩЕ»), текущее использование и предел использования. У этого есть только один метод setResourceLimit (имя строки, длинный лимит) .
общедоступный статический класс Quota.ResourceПредставляет отдельный ресурс в корне квоты.
открытый интерфейс QuotaAwareStoreИнтерфейс, реализованный магазинами, поддерживающими квоты. В getQuota и setQuota методы поддерживают модель квот , определяемое расширение IMAP QUOTA. GmailSSLStore, GmailStore, IMAPSSLStore, IMAPStore - известные классы реализации этого интерфейса.

Давайте посмотрим и рассмотрим пример в следующих разделах, который проверяет имя почтового хранилища, лимит и его использование.

Создать класс Java

Создайте файл класса Java QuotaExample, содержание которого следующее:

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

Вот подключение к сервису gmail через сервер IMAP (imap.gmail.com), поскольку IMAPStore реализует QuotaAwareStore. Получив объект Store, выберите массив Quota, выполните итерацию по нему и распечатайте соответствующую информацию.

Скомпилировать и запустить

Теперь, когда наш класс готов, давайте скомпилируем указанный выше класс. Я сохранил класс QuotaExample.java в каталоге:/home/manisha/JavaMailAPIExercise. Мы должны были бы банки javax.mail.jar и activation.jar в пути к классам. Выполните команду ниже, чтобы скомпилировать класс (оба jar-файла помещены в каталог / home / manisha /) из командной строки:

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

Теперь, когда класс скомпилирован, выполните следующую команду для запуска:

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

Проверить вывод

Вы должны увидеть аналогичное сообщение в командной консоли:

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