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 getQuota và setQuota 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.jar và activation.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'