gpt4 book ai didi

java - 使用 javax.mail(或类似的)查找可用的邮件存储、可用空间等

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:34 24 4
gpt4 key购买 nike

如何使用 javax.mail 或任何相关的 Java 库来了解用户的邮件存储大小、可用空间量以及总可用空间量?

我使用 javax.mail api 获取有关消息的信息。

Message message = new MimeMessage(session);
folder1 = store.getDefaultFolder();
folder1 = folder1.getFolder(boxType);
System.out.println("folder found :"
+ folder1.exists()
+ "folder name is "
+ folder1.getFullName());
folder1.open(Folder.READ_ONLY);
messages = folder1.getMessages();

最佳答案

您应该使用实现 QuotaAwareStore 的商店接口(interface),例如IMAPSSLStoreIMAPStore .在这样的商店和每个 Quota 上调用“getQuota” “资源”的对象检查数组。每个Quota.Resource包含“限制”和“使用”值。

    Properties prop = System.getProperties();

String host = "imap.gmail.com";
String username = "user@google.com";
String password = "some-password";

prop.setProperty("mail.imap.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
prop.setProperty("mail.imap.host", host);
prop.setProperty("mail.imap.port", "993");
prop.setProperty("mail.imap.starttls.enable", "true");
prop.setProperty("mail.imap.socketFactory.fallback", "false");
prop.setProperty("mail.debug", "true");

Session ses = Session.getInstance(prop, null);
Store store = ses.getStore("imap");
store.connect(host, username, password);

if (!IMAPStore.class.isInstance(store))
throw new IllegalStateException("Is not IMAPStore");

IMAPStore imapStore = (IMAPStore) store;
Quota[] quotas = imapStore.getQuota("INBOX");

for (Quota quota : quotas) {
System.out.println(String.format("quotaRoot:'%s'", quota.quotaRoot));

for (Quota.Resource resource : quota.resources) {
System.out.println(String.format("name:'%s', limit:'%s', usage:'%s'",
resource.name, resource.limit, resource.usage));
}
}

我账户的控制台输出:

quotaRoot:''name:'STORAGE', limit:'10486380', usage:'1564'

编辑
另一个试图找到配额和文件夹大小之间相关性的例子:
IMAP quota and folder size big example

总结,基于 JavaMail JavaDoc 和 GMail 大例子的结果:

  • 多个Folder 可以有相同的Quota 对象。例如,GMail 只有一个 Quota 在所有文件夹之间共享。
  • Folder 是逻辑实体(不像文件系统上的文件夹)。例如,GMail 有文件夹 [Gmail]/All Mail,其中包含来自其他文件夹的邮件。
  • limitusage GMail 为 Quota 返回的值(以千字节为单位)。

因此,如果您需要显示剩余空间量,您应该使用 Quota。如果您需要显示带有消息的网格并按大小排序,您应该使用 folder.getMessages()message.getSize()

关于java - 使用 javax.mail(或类似的)查找可用的邮件存储、可用空间等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10464119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com