JavaMail API - 配額管理



JavaMail 中的配額是指郵件儲存中訊息的數量或數量限制。每次郵件服務請求都會計入 JavaMail API 呼叫配額。電子郵件服務可以應用以下配額標準

  • 包括附件在內的傳出郵件的最大大小。

  • 包括附件在內的傳入郵件的最大大小。

  • 管理員為收件人時郵件的最大大小

對於配額管理,JavaMail 具有以下類

描述
public class Quota此類表示給定配額根目錄的一組配額。每個配額根目錄都有一組資源,由 Quota.Resource 類表示。每個資源都有一個名稱(例如,“STORAGE”)、當前使用量和使用限制。它只有一個方法 setResourceLimit(String name, long limit)
public static class Quota.Resource表示配額根目錄中的單個資源。
public interface QuotaAwareStore支援配額的儲存實現的介面。getQuotasetQuota 方法支援由 IMAP QUOTA 擴充套件定義的配額模型。GmailSSLStore、GmailStore、IMAPSSLStore、IMAPStore 是此介面的已知實現類。

讓我們在以下部分檢視一個示例,該示例檢查郵件儲存名稱、限制及其使用情況。

建立 Java 類

建立一個名為 QuotaExample 的 Java 類檔案,其內容如下所示

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", "abc@gmail.com", "*****");
         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();
      }
   }
}

這裡透過 IMAP(imap.gmail.com)伺服器連線到 Gmail 服務,因為 IMAPStore 實現 QuotaAwareStore。獲取 Store 物件後,獲取 Quota 陣列並遍歷它並列印相關資訊。

編譯和執行

現在我們的類已準備就緒,讓我們編譯上面的類。我已將類 QuotaExample.java 儲存到目錄:/home/manisha/JavaMailAPIExercise。我們需要將 javax.mail.jaractivation.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%40gmail.com@imap.gmail.com
quotaRoot:''
name:'STORAGE', limit:'15728640', usage:'513'
廣告

© . All rights reserved.