JavaMail API - Quản lý hạn ngạch

Hạn ngạch trong JavaMail là một số lượng hoặc số lượng thư có giới hạn hoặc cố định trong một cửa hàng email. Mỗi yêu cầu dịch vụ Thư được tính vào hạn ngạch Lệnh gọi API JavaMail. Một dịch vụ email có thể áp dụng tiêu chí hạn ngạch sau:

  • Kích thước tối đa của thư gửi đi, bao gồm cả tệp đính kèm.

  • Kích thước tối đa của thư đến, bao gồm cả phần đính kèm.

  • Kích thước tối đa của tin nhắn khi quản trị viên là người nhận

Để quản lý hạn ngạch JavaMail có các lớp sau:

Lớp học Sự miêu tả
hạn ngạch công khai Lớp này đại diện cho một tập hợp các hạn ngạch cho một gốc hạn ngạch nhất định. Mỗi gốc hạn ngạch có một tập hợp tài nguyên, được đại diện bởi lớp Quota.Resource. Mỗi tài nguyên có tên (ví dụ: "LƯU TRỮ"), mức sử dụng hiện tại và giới hạn sử dụng. Điều này chỉ có một phương thức setResourceLimit (Tên chuỗi, giới hạn dài) .
public static class Quota.Resource Đại diện cho một tài nguyên riêng lẻ trong gốc hạn ngạch.
giao diện công cộng QuotaAwareStore Giao diện được triển khai bởi Cửa hàng hỗ trợ hạn ngạch. Phương thức getQuotasetQuota hỗ trợ mô hình hạn ngạch được xác định bởi phần mở rộng IMAP QUOTA. GmailSSLStore, GmailStore, IMAPSSLStore, IMAPStore là các lớp triển khai đã biết của giao diện này.

Hãy để chúng tôi xem và làm ví dụ trong các phần sau để kiểm tra tên lưu trữ thư, giới hạn và việc sử dụng nó.

Tạo lớp Java

Tạo tệp lớp java QuotaExample, nội dung của nó như sau:

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

Đây là kết nối với dịch vụ gmail qua máy chủ IMAP (imap.gmail.com), vì IMAPStore triển khai QuotaAwareStore. Khi bạn nhận được đối tượng Store, hãy tìm nạp mảng Quota và lặp qua nó và in thông tin liên quan.

Biên dịch và Chạy

Bây giờ lớp của chúng ta đã sẵn sàng, chúng ta hãy biên dịch lớp trên. Tôi đã lưu lớp QuotaExample.java vào thư mục:/home/manisha/JavaMailAPIExercise. Chúng tôi cần các chum javax.mail.jaractivation.jar trong classpath. Thực thi lệnh bên dưới để biên dịch lớp (cả hai lọ đều được đặt trong thư mục / home / manisha /) từ dấu nhắc lệnh:

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

Bây giờ lớp đã được biên dịch, hãy thực thi lệnh dưới đây để chạy:

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

Xác minh đầu ra

Bạn sẽ thấy một thông báo tương tự trên bảng điều khiển lệnh:

imapStore ---imaps://abc%40gmail.com@imap.gmail.com
quotaRoot:''
name:'STORAGE', limit:'15728640', usage:'513'