Не удалось получить использование учетной записи электронной почты O365: com.sun.mail.iap.BadCommandException: GETQUOTAROOT не поддерживается
Не могли бы вы помочь получить общий выделенный и используемый размер для учетной записи электронной почты O365 с использованием java.
Этот код работал для учетной записи Gmail с соответствующим хостом и портом Gmail, но не работал для O365.
будет ли подключение к общему почтовому ящику и ящику электронной почты обычного пользователя одинаковым набором возможностей?
При подключении к учетной записи Gmail заметил, что мы должны включить менее безопасный доступ к приложениям для успешного получения квоты. (Учетная запись> Безопасность> Небезопасный доступ к приложениям> включено). Должен ли быть включен какой-либо подобный параметр для работы с O365?
Ошибка:
javax.mail.MessagingException: QUOTA not supported;
nested exception is:
com.sun.mail.iap.BadCommandException: GETQUOTAROOT not supported
at java.mail/com.sun.mail.imap.IMAPStore.getQuota(IMAPStore.java:1942)
at storage.StorageLimit.main(StorageLimit.java:39)
Caused by: com.sun.mail.iap.BadCommandException: GETQUOTAROOT not supported
at java.mail/com.sun.mail.imap.protocol.IMAPProtocol.getQuotaRoot(IMAPProtocol.java:2742)
at java.mail/com.sun.mail.imap.IMAPStore.getQuota(IMAPStore.java:1940)
... 1 more
Код:
package storage;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Quota;
import javax.mail.Session;
import javax.mail.Store;
import com.sun.mail.imap.IMAPStore;
public class StorageLimit {
public static void main(String[] args) {
try {
Properties properties = new Properties();
properties.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.imaps.socketFactory.fallback", "false");
properties.setProperty("mail.imaps.port", "993");
properties.setProperty("mail.imaps.socketFactory.port", "993");
properties.put("mail.imaps.host", "outlook.office365.com");
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("outlook.office365.com", 993, "abc@companydomain.com", "password");
IMAPStore imapStore = (IMAPStore) store;
System.out.println("imapStore ---" + imapStore);
// Folder inbox = store.getFolder("INBOX");
Folder inbox = store.getFolder("INBOX");
System.out.println("folder quta: "+imapStore.getQuota("INBOX"));
/* Open the inbox using store. */
//inbox.open(Folder.READ_ONLY);
inbox.open(Folder.READ_WRITE);
// Message messages[] = inbox.search(new FlagTerm(new Flags(Flags.Flag.ANSWERED), false));
//Message[] msgs = inbox.getMessages();
System.out.println("No. of Unread Messages : " + inbox.getUnreadMessageCount());
System.out.println("No. of Messages : " + inbox.getMessageCount());
System.out.println("No. of Deleted Messages : " + inbox.getMode());
// 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();
}
}
}