Javamail Api 简明教程
JavaMail API - Quota Management
JavaMail 中的配额是指电子邮件存储中一条消息的限制或固定数量或金额。每次邮件服务请求均计入 JavaMail API 调用配额。电子邮件服务可以应用以下配额标准:
-
包括附件在内的发件邮件的最大大小。
-
包括附件在内的收件邮件的最大大小。
-
管理员作为收件人时的最大信息大小
对于配额管理,JavaMail 有以下类:
Class |
Description |
public class Quota |
该类表示给定配额根的一组配额。每个配额根都有一组资源,由配额。资源类表示。每个资源都有一个名称(例如“STORAGE”),一个当前使用量和一个使用限制。此方法只有一个 setResourceLimit(String name, long limit)。 |
public static class Quota.Resource |
表示配额根中的单个资源。 |
public interface QuotaAwareStore |
由支持配额的存储实现的接口。getQuota 和 setQuota 方法支持 IMAP QUOTA 扩展定义的配额模型。GmailSSLStore、GmailStore、IMAPSSLStore、IMAPStore 是此接口已知的实现类。 |
让我们在以下部分中查看一个示例,该示例检查邮件存储名称、限制及其使用情况。
Create Java Class
创建一个 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", "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();
}
}
}
以下是通过 IMAP(imap.gmail.com)服务器连接到 gmail 服务,因为 IMAPStore 实施了 QuotaAwareStore。一旦你获取 Store 对象,获取配额数组并遍历它,打印相关信息。
Compile and Run
现在我们的类已经准备好了,让我们编译上述类。我已将类 QuotaExample.java 保存到目录 /home/manisha/JavaMailAPIExercise 中。我们需要 classpath 中的 jars javax.mail.jar 和 activation.jar。从命令提示符执行以下命令来编译类(这两个 jars 都放置在 /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