一、查找邮件
在 JavaMail 中查找邮件,不用调用 Folder.getMessages() 方法把邮件夹中的所有邮件都返回,然后再在Message[]中进行搜索。而是可以根据给定的一些条件过滤搜索出我们想要的邮件,之后再对进行获得的邮件进行操作。
要使用搜索过滤功能,必须用到 java.mail.search 包中的 SearchTerm 抽象类。在这个包中,我们可以使用其他具有不同组合关系的子类和具有不同搜索条件的类来进行操作。
1、逻辑组合关系的子类有:AndTerm 类、OrTerm 类、NotTerm 类、ComparisonTerm 类,它们都是 SearchTerm 抽象类的具体子类;
2、具体搜索条件的类有:DateTerm 类、BodyTerm 类、HeaderTerm 类,这几个都是抽象类,具体应用时应该由其对应的子类来实现。
范例1
一个简单的例子
Message[] msgs = null;
try {
Folder folder = getFolder(user, folderName);
folder.open(Folder.READ_ONLY);
SearchTerm st = new AndTerm(new FromStringTerm("x@x.x"),new SubjectTerm("xx"));
msgs = folder.search(st);
} catch (MessagingException e) {
}
A、SearchTerm基础抽象类
javax.mail.search.SearchTerm
public abstract class SearchTerm implements Serializable
搜索条件表示为树的搜索方面,形成了一个搜索表达式的解析树。
代表这个类搜索条件。这是一个抽象类的子类实现特定的匹配方法。
搜索条件是序列化的,它允许存储在会话之间的搜索词。
AndTerm |
This class implements the logical AND operator on individual SearchTerms. 这个类实现了逻辑上AND运算。 |
NotTerm |
This class implements the logical NEGATION operator. 这个类实现了逻辑上NOT运算。 |
OrTerm |
This class implements the logical OR operator on individual SearchTerms. 这个类实现了逻辑上OR运算。 |
ComparisonTerm |
This class models the comparison operator. 这个类实现比较运算。 |
IntegerComparisonTerm |
This class implements comparisons for integers. 这个类实现对整数进行比较。 |
StringTerm |
This class implements the match method for Strings. 这个类实现字符串匹配方法。 |
AddressTerm |
This class implements Message Address comparisons. 这个类实现了邮件地址比较。 |
BodyTerm |
This class implements searches on a message body. 这个类实现了对邮件正文的搜索。 |
DateTerm |
This class implements comparisons for Dates 这个类实现日期的比较 |
FlagTerm |
This class implements comparisons for Message Flags. 这个类实现了邮件标志的比较。 |
FromStringTerm |
This class implements string comparisons for the From Address header. 这个类实现了From地址头的字符串比较。 |
FromTerm |
This class implements comparisons for the From Address header. 这个类实现了From Address的比较。 |
HeaderTerm |
This class implements comparisons for Message headers. 这个类实现了消息头进行比较。 |
MessageIDTerm |
This term models the RFC822 "MessageId" - a message-id for Internet messages that is supposed to be unique per message. 这个类实现了MessageId进行比较。 |
MessageNumberTerm |
This class implements comparisons for Message numbers. 这个类实现了Message numbers进行比较。 |
ReceivedDateTerm |
This class implements comparisons for the Message Received date 这个类实现了接受时间进行比较。 |
RecipientStringTerm |
This class implements string comparisons for the Recipient Address headers. 这个类实现了收件人进行比较。 |
RecipientTerm |
This class implements comparisons for the Recipient Address headers. 这个类实现了收件人Address进行比较。 |
SentDateTerm |
This class implements comparisons for the Message SentDate. 这个类实现了发送时间进行比较。 |
SizeTerm |
This class implements comparisons for Message sizes. 这个类实现了邮件大小进行比较。 |
SubjectTerm |
This class implements comparisons for the message Subject header. 这个类实现消息标题头进行比较。 |