JavaMailAPI-クォータ管理

JavaMailのクォータは、電子メールストア内のメッセージの数または量が制限されているか固定されています。各メールサービスリクエストは、JavaMailAPI呼び出しのクォータにカウントされます。電子メールサービスは、次の割り当て基準を適用できます。

  • 添付ファイルを含む送信メールメッセージの最大サイズ。

  • 添付ファイルを含む、受信メールメッセージの最大サイズ。

  • 管理者が受信者である場合のメッセージの最大サイズ

クォータ管理の場合、JavaMailには次のクラスがあります。

クラス 説明
パブリッククラスクォータ このクラスは、特定のクォータルートのクォータのセットを表します。各クォータルートには、Quota.Resourceクラスで表されるリソースのセットがあります。各リソースには、名前(たとえば、「STORAGE」)、現在の使用量、および使用制限があります。これには、メソッドsetResourceLimit(String name、long limit)が1つだけあります。
パブリック静的クラスQuota.Resource クォータルート内の個々のリソースを表します。
パブリックインターフェイスQuotaAwareStore クォータをサポートするストアによって実装されるインターフェース。getQuotaSETQUOTA方法は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();
      }
   }
}

IMAPStoreはQuotaAwareStoreを実装しているため、IMAP(imap.gmail.com)サーバーを介したGmailサービスへの接続は次のとおりです。Storeオブジェクトを取得したら、Quota配列をフェッチして繰り返し処理し、関連情報を出力します。

コンパイルして実行

クラスの準備ができたので、上記のクラスをコンパイルしましょう。QuotaExample.javaクラスをディレクトリに保存しました:/home/manisha/JavaMailAPIExercise。クラスパスにjarjavax.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%[email protected]
quotaRoot:''
name:'STORAGE', limit:'15728640', usage:'513'