我正在 Android 上开发一个电子邮件应用程序,我被困在这里。如果我使用 Gmail 服务器,我可以按 ID 搜索电子邮件
SearchTerm term = new MessageIDTerm(ID);
message_s = folder.search(term);
但是使用此代码,我无法使用其他服务器(如 yahoo、hotmail)搜索电子邮件。我尝试通过覆盖此代码来解决此错误
SearchTerm messageIDTerm= new SearchTerm() {
@Override
public boolean match(Message message) {
try {
String messageID="";
Enumeration headers = message.getAllHeaders();
while (headers.hasMoreElements()) {
eader h = (Header) headers.nextElement();
String mID = h.getName();
if(mID.contains("Message-ID") || mID.contains("Message-Id")){
messageID= h.getValue();
}
}
if (messageID.contains(ID)) {
return true;
}
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
};
message_s = folder.search(messageIDTerm);
搜索邮件是成功的。但问题是这段代码通过客户端搜索检查每个 Message-ID(下载 message-ID 并进行比较),并且需要很长时间才能找到结果。
第一种方式,服务器对我的请求进行搜索,而且速度非常快。
那么,如果我使用第二种方式,如何使搜索与第一种方式一样快呢?