JavaMail NotTerm无法使用Yahoo或Hotmail

时间:2015-07-16 19:33:01

标签: java email javamail imap

我正在开发一个需要提取特定过滤消息的应用程序。我还需要能够排除某些消息。例如,用户可能想要排除主题的所有消息,在这种情况下,我将创建一个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();                
        }
    }
}

0 个答案:

没有答案