JavaMail API-할당량 관리

JavaMail의 할당량은 전자 메일 저장소에있는 제한되거나 고정 된 메시지 수 또는 양입니다. 각 메일 서비스 요청은 JavaMail API 호출 할당량에 포함됩니다. 이메일 서비스는 다음 할당량 기준을 적용 할 수 있습니다.

  • 첨부 파일을 포함하여 보내는 메일 메시지의 최대 크기입니다.

  • 첨부 파일을 포함한 수신 메일 메시지의 최대 크기.

  • 관리자가 수신자 인 경우 최대 메시지 크기

할당량 관리를 위해 JavaMail에는 다음 클래스가 있습니다.

수업 기술
공개 클래스 할당량 이 클래스는 주어진 할당량 루트에 대한 할당량 집합을 나타냅니다. 각 할당량 루트에는 Quota.Resource 클래스로 표시되는 리소스 집합이 있습니다. 각 리소스에는 이름 (예 : "STORAGE"), 현재 사용량 및 사용량 제한이 있습니다. 여기에는 setResourceLimit (String name, long limit) 메서드가 하나만 있습니다.
공용 정적 클래스 Quota.Resource 할당량 루트의 개별 리소스를 나타냅니다.
공용 인터페이스 QuotaAwareStore 할당량을 지원하는 저장소에서 구현 한 인터페이스입니다. getQuotasetQuota 방법은 IMAP 할당량 확장에 의해 정의 된 할당량 모델을 지원합니다. GmailSSLStore, GmailStore, IMAPSSLStore, IMAPStore 는이 인터페이스의 알려진 구현 클래스입니다.

다음 섹션에서 메일 저장소 이름, 제한 및 사용을 확인하는 예를 살펴 보겠습니다.

자바 클래스 생성

자바 클래스 파일 만들기 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. 클래스 경로에 jars 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%[email protected]
quotaRoot:''
name:'STORAGE', limit:'15728640', usage:'513'