无法使用Mail API使用searchTerm搜索电子邮件服务器

时间:2013-07-23 09:13:25

标签: java javamail javax.mail

发送电子邮件,发送电子邮件至gg@gg.com,附件为2个电子邮件ID。一个,我的电子邮件ID和另一个xx@xx.com 我收到了那封邮件。当我使用带有电子邮件ID作为搜索条件的java Mail API进行邮件搜索时,虽然我收到了该电子邮件但它无法找到它。但是当我将其转发到相同的电子邮件ID时,搜索条件工作正常。如果此时第一次收到电子邮件,请告知我无法搜索的原因

Properties properties = System.getProperties();
        properties.put("mail.smtp.host", ExchangeProperties.getSmtpHost());
        properties.put("mail.pop3.connectiontimeout", String.valueOf(ExchangeProperties.getPop3ConnectionTimeout() * 1000));
        properties.put("mail.pop3.timeout", String.valueOf(ExchangeProperties.getPop3Timeout() * 1000));
        session = Session.getInstance(properties, null);
        session.setDebug(logger.isDebugEnabled());
        // Get the store
        store = session.getStore("pop3");
        store.connect(ExchangeProperties.getSmtpHost(), user, password);


 Folder folder = store.getFolder(folderName)
      Message[] foundMessages  = folder.search(andTerm); //andTerm contains email id
      FetchProfile fp = new FetchProfile();
                    fp.add(FetchProfile.Item.ENVELOPE);
                    folder.fetch(foundMessages, fp);

1 个答案:

答案 0 :(得分:0)

由于您使用的是pop3,所有搜索都是通过将所有消息下载到客户端并在那里搜索来完成的。如果您希望服务器进行搜索,请使用imap。

如果在打开pop3文件夹时收到新邮件,您将无法看到它。您需要关闭该文件夹并重新打开它。这是pop3协议的限制。

如果这些都不能解决您的问题,我需要准确了解您正在使用的搜索字词,确切的搜索值以及电子邮件标题中显示的确切值。