JavaMail NotTerm不适用于Yahoo或Hotmail

JavaMail NotTerm不适用于Yahoo或Hotmail,java,email,jakarta-mail,imap,Java,Email,Jakarta Mail,Imap,我正在开发一个需要提取特定过滤消息的应用程序。我还需要能够排除某些消息。例如,用户可能希望排除带有主题的所有消息,在本例中,我将创建一个SubjectTerm,并将其放入NotTerm中。由于某种原因,这将返回0条消息。当我只询问主题词时,它会返回正确的消息。我试图使用此代码的特定服务是yahoo和hotmail package javaapplication2; import java.io.*; import java.util.*; import javax.mail.*; import

我正在开发一个需要提取特定过滤消息的应用程序。我还需要能够排除某些消息。例如,用户可能希望排除带有主题的所有消息,在本例中,我将创建一个SubjectTerm,并将其放入NotTerm中。由于某种原因,这将返回0条消息。当我只询问主题词时,它会返回正确的消息。我试图使用此代码的特定服务是yahoo和hotmail

package javaapplication2;
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.search.*;

public class imapyahoo {
public static void main(String[] args) {
    //set the properties for an ssl connection to the imap server.
    java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
    Properties props = new Properties();
    props.setProperty("mail.store.protocol", "imaps");
    props.setProperty("mail.imap.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");
    props.setProperty("mail.imap.socketFactory.fallback", "false");
    props.setProperty("mail.imap.socketFactory.port", "993");

    try {
        Session session = Session.getInstance(props, null);
         Store store =  session.getStore();
         System.out.println("connecting....");
         store.connect("imap.mail.yahoo.com", "account", "password");
         System.out.println("connected");
         System.out.println("searching inbox"); 
         Folder inbox = store.getFolder("inbox");

         inbox.open(Folder.READ_ONLY);
         //apply the search term.
         SearchTerm st = new NotTerm(new SubjectTerm("dogs"));
         Message[] msgs =inbox.search(st);

         System.out.println(msgs.length);
         System.out.println("done searching");
         //print out the messages
         int i =1;
         for (Message msg : msgs){
             System.out.println(i);
             System.out.println(msg.getSubject());
            i++;
         } 

        inbox.close(true);
        store.close();
    } catch (Exception mex) {
        mex.printStackTrace();                
        }
    }
}

你有没有考虑过雅虎和Hotmail可能不支持这一点。搜索没有特定术语的项目可能比搜索包含术语的项目更昂贵。我不确定这是一个编程问题(和主题),还是一个“支持什么(或不支持什么)”,这将是一个离题的问题;由于您使用的是“imaps”协议,所有这些都会自动完成。至于搜索问题,请打开。调试输出将准确显示服务器为您的搜索请求返回的内容。根据你所说的,最有可能的答案是服务器没有正确地实现IMAP规范,你应该向服务器供应商报告这一缺陷。你是否考虑过Yahoo和Hotmail可能不支持这一点。搜索没有特定术语的项目可能比搜索包含术语的项目更昂贵。我不确定这是一个编程问题(和主题),还是一个“支持什么(或不支持什么)”,这将是一个离题的问题;由于您使用的是“imaps”协议,所有这些都会自动完成。至于搜索问题,请打开。调试输出将准确显示服务器为您的搜索请求返回的内容。根据您所说的,最有可能的答案是服务器没有正确地实现IMAP规范,您应该将此作为错误报告给服务器供应商。