Java 无法删除域.co.jp类型的电子邮件

Java 无法删除域.co.jp类型的电子邮件,java,jakarta-mail,imap,yahoo-mail,Java,Jakarta Mail,Imap,Yahoo Mail,我已经使用java邮件API编写了java代码。对于IMAPs帐户,它执行以下操作: 将邮件标记为已读/未读 发送/删除邮件 我的代码适用于大多数IMAP邮件帐户。我正在根据邮件的UID提取邮件。但令人惊讶的是,对于具有域的邮件帐户,删除操作不起作用xxx12@yahoo.co.jp. 我还尝试在域中创建一个新帐户@yahoo.co.jp 邮件帐户的工作内容为@yahoo.co.jp 它们是: 标记为已读/未读 到目前为止,我已经尝试了这个链接并阅读了。 我也尝试过删除其他雅虎邮件的操作(例如

我已经使用java邮件API编写了java代码。对于IMAPs帐户,它执行以下操作:

  • 将邮件标记为已读/未读
  • 发送/删除邮件
  • 我的代码适用于大多数IMAP邮件帐户。我正在根据邮件的UID提取邮件。但令人惊讶的是,对于具有域的邮件帐户,删除操作不起作用xxx12@yahoo.co.jp. 我还尝试在域中创建一个新帐户@yahoo.co.jp

    邮件帐户的工作内容为@yahoo.co.jp 它们是:

  • 标记为已读/未读
  • 到目前为止,我已经尝试了这个链接并阅读了。 我也尝试过删除其他雅虎邮件的操作(例如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.MessaginException:

    嵌套异常是:

    我想删除以yahoo.co.jp为域名的邮件。任何帮助都将不胜感激

    更新:

    添加session.setDebug后(true)

    我发现:

    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
    

    请询问您是否需要有关该问题的更多详细信息。

    我认为服务器出于某种原因限制了您,因此您无法从邮件服务器中删除邮件。你可以联系你的邮件管理员。否则java代码中就没有错误。

    我认为服务器限制了您的某些原因,所以这就是您无法从邮件服务器删除邮件的原因。你可以联系你的邮件管理员。否则java代码就没有问题。

    我认为代码没有任何问题,这将是设置/权限相关的问题,
    请检查您的邮件配置或权限。

    我认为代码没有任何问题,这将是设置/权限相关的问题,
    请检查您的邮件配置或权限。

    什么是“指定操作”?一些IMAP调试日志在这里会有所帮助。@arnt我已经更新了问题,请检查。我已经尝试添加调试,但遗憾的是没有发现任何有用的东西:(.听起来好像您有只读访问权限。调试日志的前面部分会告诉您,最重要的是对
    选择
    @arnt的响应。我已将打开邮件的完整日志更新到inbox.close。希望这会有所帮助。看起来确实不允许您设置
    \Deleted
    标志。您是否尝试设置了另一个r标志?也许你应该和邮箱管理员谈谈。什么是“指定的操作”?一些IMAP调试日志在这里会有帮助。@arnt我已经更新了问题,请检查。我已经尝试添加调试,但遗憾的是没有发现任何有用的东西:(.听起来好像您有只读访问权限。调试日志的前面部分会告诉您,最重要的是对
    选择
    @arnt的响应。我已将打开邮件的完整日志更新到inbox.close。希望这会有所帮助。看起来确实不允许您设置
    \Deleted
    标志。您是否尝试设置了另一个r标志?也许你应该和邮箱管理员谈谈。
    com.sun.mail.iap.CommandFailedException: A4 NO [CANNOT] STORE It's not possible to perform specified operation
    
    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