JavaMail NotTerm不适用于Yahoo或Hotmail
我正在开发一个需要提取特定过滤消息的应用程序。我还需要能够排除某些消息。例如,用户可能希望排除带有主题的所有消息,在本例中,我将创建一个SubjectTerm,并将其放入NotTerm中。由于某种原因,这将返回0条消息。当我只询问主题词时,它会返回正确的消息。我试图使用此代码的特定服务是yahoo和hotmailJavaMail 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
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规范,您应该将此作为错误报告给服务器供应商。