Не удается удалить электронные письма с доменом .co.jp - PullRequest
1 голос
/ 15 мая 2019

Я написал код Java, используя API почты Java.Что делает следующие вещи для учетной записи IMAP:

  1. Пометить почту как прочитанную / непрочитанную.
  2. Отправка / удаление писем.

Мой код хорошо работает длябольшинство почтовых учетных записей IMAP.Я получаю письма на основе их UID.Но удивительно, что это не работает для операции удаления для почтовых учетных записей, имеющих домен xxx12@yahoo.co.jp.Я также попытался создать новую учетную запись, имеющую @ yahoo.co.jp в домене.

Для почтовых учетных записей, имеющих @ yahoo.co.jp, работают:

  1. Пометить как прочитанное / непрочитанное.

До сих пор я пробовал эту ссылку Удалить электронную почту на сервере, используя javax.mail и читать https://javaee.github.io/javamail/FAQ.Я также попытался удалить операцию с другими письмами Yahoo (например, xxx12@yahoo.com) вместе с почтовой учетной записью Gmail, в которой приведенный ниже код работает должным образом, оба протестированных типа были IMAP-типа.

Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
props.put("mail.smtp.starttls.enable", true);
session = Session.getInstance(props, null);
session.setDebug(true);
store = session.getStore("imaps");
store.connect("host", "port","uname","pass");
inbox = (IMAPFolder) store.getFolder(folderName);
inbox.open(Folder.READ_WRITE);
long uid = Long.parseLong(messageId);
message = inbox.getMessageByUID(uid);
if (message != null) {
    if(form.getFlagType().equals("read")){
        Flags read = new Flags(Flags.Flag.SEEN);
        message.setFlags(read, true);
    } else if(form.getFlagType().equals("unread")){
        Flags unread = new Flags(Flags.Flag.SEEN);
        message.setFlags(unread, false);
    } else if(form.getFlagType().equals("delete")){
        Flags deleteMail = new Flags(Flags.Flag.DELETED);
        message.setFlags(deleteMail, true);
    }
}
inbox.close(true); 
catch(Exception e){
    e.printStackTrace();
}

Строка, написанная в приведенном выше коде message.setFlags (deleteMail, true);

Дает исключение, как показано ниже:

javax.mail.MessagingException:

A4 NO [CANNOT] STORE It's not possible to perform specified operation;

вложенное исключение:

com.sun.mail.iap.CommandFailedException: A4 NO [CANNOT] STORE It's not possible to perform specified operation

Я хочу удалить почту, в которой yahoo.co.jp является доменом.Любая помощь будет принята с благодарностью.

ОБНОВЛЕНИЕ:

После добавления session.setDebug (true);

Iнашел следующее:

A2 SELECT INBOX
* 3 EXISTS
* 0 RECENT
* OK [UIDVALIDITY 1557837307] UIDs valid
* OK [UIDNEXT 20006] Predicted next UID
* FLAGS (\Answered \Deleted \Draft \Flagged \Seen $Forwarded $Junk $NotJunk)
* OK [PERMANENTFLAGS (\Answered \Deleted \Draft \Flagged \Seen $Forwarded $Junk $NotJunk)] Permanent flags
* OK [HIGHESTMODSEQ 27]
A2 OK [READ-WRITE] SELECT completed; now in selected state
A3 UID FETCH 20005 (UID)
* 3 FETCH (UID 20005)
A3 OK UID FETCH completed
A4 STORE 3 +FLAGS (\Deleted)
A4 NO [CANNOT] STORE It's not possible to perform specified operation
DEBUG IMAPS: IMAPProtocol noop
A5 NOOP
A5 OK NOOP completed
A6 CLOSE
A6 OK CLOSE completed
DEBUG IMAPS: added an Authenticated connection -- size: 1
DEBUG IMAPS: IMAPProtocol noop
A7 NOOP
A7 OK NOOP completed
A8 LOGOUT
* BYE IMAP4rev1 Server logging out
A8 OK LOGOUT completed
DEBUG IMAPS: IMAPStore connection dead
DEBUG IMAPS: IMAPStore cleanup, force false
DEBUG IMAPS: IMAPStore cleanup done

Пожалуйста, спросите, если вам нужна дополнительная информация по этому вопросу.

...