JavaMail学习笔记(六)、搜索邮件(二)

2014-11-24 08:20:18 · 作者: · 浏览: 6
ch(folder);

System.out.println("收件箱中共有:" + folder.getMessageCount() + "封邮件,搜索到" + messages.length + "封符合条件的邮件!");

// 解析邮件搜索到的邮件
POP3ReceiveMailTest.parseMessage(messages);

// 根据用户输入的条件搜索所有邮件,并提示用户是否删除
//searchDemo(folder);

folder.close(true);
store.close();
}
www.2cto.com
public static Message[] search(Folder folder) throws Exception {
// 搜索主题包含美食的邮件
String subject = "java培训";
SearchTerm subjectTerm = new SubjectTerm(subject);

// 搜索发件人包含支付宝的邮件
SearchTerm fromTerm = new FromStringTerm("支付宝");

// 搜索邮件内容包含"招聘"的邮件
SearchTerm bodyTerm = new BodyTerm("招聘");

// 搜索发件人不包含“智联招聘”的邮件
SearchTerm notTerm = new NotTerm(new FromStringTerm("智联招聘"));

// 搜索发件人为“智联招聘”,而且内容包含“Java工程师“的邮件
SearchTerm andTerm = new AndTerm(
new FromStringTerm("智联招聘"),
new BodyTerm("java工程师"));


// 搜索发件人为”智联招聘“或主题包含”最新职位信息“的邮件
SearchTerm orTerm = new OrTerm(
new FromStringTerm("智联招聘"),
new SubjectTerm("最新职位信息"));


// 搜索周一到今天收到的的所有邮件
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_WEEK, calendar.get(Calendar.DAY_OF_WEEK - (Calendar.DAY_OF_WEEK - 1)) - 1);
Date mondayDate = calendar.getTime();
SearchTerm comparisonTermGe = new SentDateTerm(ComparisonTerm.GE, mondayDate);
SearchTerm comparisonTermLe = new SentDateTerm(ComparisonTerm.LE, new Date());
SearchTerm comparisonAndTerm = new AndTerm(comparisonTermGe, comparisonTermLe);

// 搜索大于或等100KB的所有邮件
int mailSize = 1024 * 100;
SearchTerm intComparisonTerm = new SizeTerm(IntegerComparisonTerm.GE, mailSize);

return folder.search(intComparisonTerm);
}
}
实例:根据用户输入的收件人(email地址或姓名)和主题作为搜索条件,并提示用户是否删除搜索到的邮件?
[java] view plaincopy
/**
* 根据用户输入的收件人地址(包括email地址和姓名)和主题作为搜索条件,并提示用户是否删除搜索到的邮件
* @param from 收件人
* @param subject 主题
*/
public static void searchDemo(Folder folder) throws Exception {
String notifyMsg = "收件箱中一共有" + folder.getMessageCount() + "封邮件。请选择操作:\n";
notifyMsg += "1、输入收件人\n" + "2、输入主题\n" + "3、开始搜索\n" + "4、退出";
System.out.println(notifyMsg);
String from = null;
String subject = null;
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String oper = reader.readLine().trim();
while(!(from != null && subject != null)) {
if ("4".equals(oper)) {
System.exit(0);
} else {
if ("1".equals(oper)) {
System.out.print("请输入收件人:");
from = reader.readLine();
} else if ("2".equals(oper)) {
System.out.print("请输入主题:");
subject = reader.readLine();
} else if ("3".equals(oper)) {
if (from == null || subject == null) {
System.out.println("未输入搜索条件,无法进行搜索!");
} else {
brea