Jakarta mail Can';t使用SearchTerm=newmessageidterm(ID)按邮件ID搜索邮件
我正在Android上开发一个电子邮件应用程序,我被困在这里了。如果我使用Gmail服务器,我可以通过ID搜索电子邮件Jakarta mail Can';t使用SearchTerm=newmessageidterm(ID)按邮件ID搜索邮件,jakarta-mail,Jakarta Mail,我正在Android上开发一个电子邮件应用程序,我被困在这里了。如果我使用Gmail服务器,我可以通过ID搜索电子邮件 SearchTerm term = new MessageIDTerm(ID); message_s = folder.search(term); 但有了这段代码,我就不能用雅虎、hotmail等其他服务器搜索电子邮件了。我试图通过重写这个代码来解决这个错误 SearchTerm messageIDTerm= new SearchTerm() { @Override
SearchTerm term = new MessageIDTerm(ID);
message_s = folder.search(term);
但有了这段代码,我就不能用雅虎、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并进行比较)检查每个消息ID,找到结果要花很多时间
第一种方式,服务器搜索我的请求,速度非常快
那么,如果我使用第二种方法,如何使搜索速度与第一种方法一样快呢?有些服务器坏了。你无法修复它们
如果必须在客户端中执行搜索,最好使用Folder.fetch方法预取执行搜索所需的标题。然后,在迭代所有需要检查的消息时,将标准MessageIDTerm与Message.match方法一起使用。我尝试使用fetch,但查找消息仍然需要很长时间。我建议向损坏邮件服务器的所有者投诉。我认为没有办法让服务器代替客户端进行搜索。因此,我必须找到另一种解决方案来获取带有某些标题的正文邮件。谢谢你的帮助。