Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaMail中使用SearchTerm_Search_Jakarta Mail - Fatal编程技术网

在JavaMail中使用SearchTerm

在JavaMail中使用SearchTerm,search,jakarta-mail,Search,Jakarta Mail,一段时间以来,我一直在使用JavaMail开发一个简单的邮件应用程序。我还使用JavaMail中的SearchTerm概念开发了一个简单的搜索工具。我想按发件人、收件人、日期、内容或主题搜索电子邮件。因此,对于上述参数,我有以下示例SearchTerm组合: SearchTerm searchSenderOrSubjectTerm = new OrTerm(termSender, termSub); SearchTerm searchSenderOrDate = new OrT

一段时间以来,我一直在使用JavaMail开发一个简单的邮件应用程序。我还使用JavaMail中的SearchTerm概念开发了一个简单的搜索工具。我想按发件人、收件人、日期、内容或主题搜索电子邮件。因此,对于上述参数,我有以下示例SearchTerm组合:

SearchTerm searchSenderOrSubjectTerm = new OrTerm(termSender, termSub);         
SearchTerm searchSenderOrDate = new OrTerm(termSender, termRecvDate);
SearchTerm searchSubjectOrSenderOrDate = new OrTerm(searchSenderOrSubjectTerm, searchSenderOrDate);
SearchTerm searchSubjectOrContentOrSenderOrDate = new OrTerm(searchSubjectOrSenderOrDate, termContent);         
SearchTerm searchSubjectOrContentOrSenderOrRecvrOrDate = new OrTerm(searchSubjectOrContentOrSenderOrDate, termRecvr);

//return the search results
 searchResults = folder.search(searchSubjectOrContentOrSenderOrRecvrOrDate);
这工作正常,并返回所需的结果。但这种方法的问题是,搜索和返回结果花费了太多时间。我只是想知道问题是内部SearchTerm实现还是来自上述方法。那么,你们能和我分享一下你们在这方面的经验吗,尤其是在性能问题上?这花费了太多的时间,我不确定问题出在哪里


关于,

如果您使用的是IMAP,则搜索都在服务器上完成,因此性能取决于服务器。如果您使用的是POP3,则通过将所有消息下载到客户端并在那里进行搜索来完成搜索。使用IMAP:-)


您可以通过使用单个OrTerm和所有其他术语的数组来简化搜索。但是,我不知道这是否会对性能产生任何影响。

除非您使用谷歌的IMAP扩展,否则您将在本地应用搜索条件

要使用JavaMail在服务器上搜索,您需要执行以下操作:

GmailStore store = (GmailStore) session.getStore("gimap");
store.connect("imap.gmail.com", "[your-account@gmail.com", "[your-pw]");
GmailFolder inbox = (GmailFolder) store.getFolder("[Gmail]/All Mail");
inbox.open(Folder.READ_ONLY);
Message[] foundMessages = inbox.search(new GmailRawSearchTerm("to:somebody@email.com"));
这里有一个更完整的示例: