JavaMail API - การจัดการโควต้า

โควต้าใน JavaMail คือจำนวนที่ จำกัด หรือคงที่หรือจำนวนข้อความในที่เก็บอีเมล คำขอบริการเมลแต่ละรายการจะนับรวมในโควต้าการเรียกใช้ JavaMail API บริการอีเมลสามารถใช้เกณฑ์โควต้าต่อไปนี้:

  • ขนาดสูงสุดของข้อความเมลขาออกรวมถึงไฟล์แนบ

  • ขนาดสูงสุดของข้อความเมลขาเข้ารวมถึงไฟล์แนบ

  • ขนาดสูงสุดของข้อความเมื่อผู้ดูแลระบบเป็นผู้รับ

สำหรับการจัดการโควต้า JavaMail มีคลาสดังต่อไปนี้:

คลาส คำอธิบาย
โควตาชั้นเรียนสาธารณะ คลาสนี้แสดงถึงชุดโควต้าสำหรับโควต้ารูทที่กำหนด แต่ละโควต้ารูทมีชุดของทรัพยากรซึ่งแสดงโดยคลาส Quota.Resource ทรัพยากรแต่ละรายการมีชื่อ (เช่น "STORAGE") การใช้งานปัจจุบันและขีด จำกัด การใช้งาน นี้มีเพียงวิธีการหนึ่งsetResourceLimit (ชื่อ String จำกัด ยาว)
โควต้าคลาสคงที่สาธารณะทรัพยากร แสดงทรัพยากรแต่ละรายการในโควต้ารูท
อินเทอร์เฟซสาธารณะ QuotaAwareStore อินเทอร์เฟซที่ใช้งานโดยร้านค้าที่รองรับโควต้า getQuotaและsetQuotaวิธีการสนับสนุนรูปแบบโควต้าที่กำหนดโดยขยาย IMAP โควต้า 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 object แล้วให้ดึง Quota array มาวนซ้ำและพิมพ์ข้อมูลที่เกี่ยวข้อง

รวบรวมและเรียกใช้

เมื่อชั้นเรียนของเราพร้อมแล้วให้เรารวบรวมคลาสข้างต้น ฉันได้บันทึกคลาส QuotaExample.java ลงในไดเร็กทอรี:/home/manisha/JavaMailAPIExercise. เราต้องการ jars javax.mail.jarและactivation.jarใน classpath ดำเนินการคำสั่งด้านล่างเพื่อรวบรวมคลาส (ทั้งสองไหอยู่ในไดเร็กทอรี / 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'