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
Search 在JavaMail中搜索-如何在服务器端实现?_Search_Gmail_Jakarta Mail - Fatal编程技术网

Search 在JavaMail中搜索-如何在服务器端实现?

Search 在JavaMail中搜索-如何在服务器端实现?,search,gmail,jakarta-mail,Search,Gmail,Jakarta Mail,我想我遗漏了一些关于如何在JavaMail中搜索的内容 从文件夹下载空邮件 创建与结果匹配的新SearchTerm 使用搜索词筛选(yourFolder.search)结果 这很有效。但是——为什么要这样做?如果我使用javamail连接到gmail之类的东西,搜索不会在服务器端执行,而且使用整个javax.mail.search.SearchTerm结构在效率或减少需要通过网络发送的数据量方面似乎没有任何优势 我没有看到在服务器端执行搜索并返回匹配列表的任何方法。有什么想法吗 编辑:包括我现在

我想我遗漏了一些关于如何在JavaMail中搜索的内容

  • 从文件夹下载空邮件
  • 创建与结果匹配的新SearchTerm
  • 使用搜索词筛选(yourFolder.search)结果
  • 这很有效。但是——为什么要这样做?如果我使用javamail连接到gmail之类的东西,搜索不会在服务器端执行,而且使用整个javax.mail.search.SearchTerm结构在效率或减少需要通过网络发送的数据量方面似乎没有任何优势

    我没有看到在服务器端执行搜索并返回匹配列表的任何方法。有什么想法吗

    编辑:包括我现在正在做的伪代码,它不会在服务器端执行任何搜索。即使我将其转换为使用SearchTerm它仍然不会在服务器端执行任何操作,对吗

    Properties-props=System.getProperties();
    props.setProperty(“mail.store.protocol”、“gimaps”);
    最终会话=Session.getDefaultInstance(props,null);
    最终GmailSSLStore存储=(GmailSSLStore)session.getStore(“gimaps”);
    store.connect(地址、密码);
    最终的Gmail文件夹allMailFolder=(Gmail文件夹)store.getFolder(“[Gmail]/All Mail”);
    allMailFolder.open(文件夹只读);
    最终消息[]allMessages=allMailFolder.getMessages();
    System.out.println(“Messages:+allMessages.length”);
    FetchProfile fp=新的FetchProfile();
    fp.add(FetchProfile.Item.信封);
    获取(所有消息,fp);
    用于(最终消息:allMessages){
    最终地址[]addrs=message.getFrom();
    如果(地址!=null){
    收件人(最终地址地址:地址){
    if(addr.toString().toLowerCase()包含(“george”)){
    System.out.println(addr.toString());
    }
    }
    }
    }
    
    您做错了什么,但您没有提供足够的详细信息让我们知道您做错了什么

    你在用IMAP吗


    向我们显示一些代码和调试输出。

    如果您使用预定义的
    SearchTerm
    实现在IMAP文件夹中搜索,它将尝试在服务器上执行搜索。查看
    SearchSequence.generateSequence
    的实现。在您的示例中,您可能希望使用
    FromStringTerm

    如果您使用的是gimap提供商,您还可以使用谷歌的IMAP扩展,其中包括
    X-GM-RAW
    search属性,允许您像在Gmail web界面中一样进行搜索。java实现在
    gmailrawsearchtm
    中,并且仅在服务器端工作