上篇文章我写的是关于如何用JavaMail来实现对邮件的查找,在这篇文章中我们继续探讨如何用JavaMail来实现邮件查找,这篇文章的重点是如何通过扩展JavaMail来实现自定义的邮件查找器
下面我将通过两个例子来说明如果扩展JavaMail的javax.mail.search中的类:
例子一:
通过扩展SearchTerm来实现自己的根据附件来查找邮件的JAttachTerm,下面是本程序的
源代码:
//|+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/*
* Created on 2005-1-30
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package webmail.mail.search;
import javax.mail.Message;
import javax.mail.internet.MimeMessage;
import javax.mail.search.StringTerm;
import webmail.mail.MimeMessageParser;
/**
* <p>Title: JSubjectTerm.java</p>
* <p>Description:</p>
* <p>Copyright: Copyright (c) 2004-2008</p>
* <p>Company: coffee-mail of BeiJing</p>
*
* @author wang weiping
* @version 1.0 2005-1-30
*/
public class JSubjectTerm extends StringTerm{
public JSubjectTerm(String pattern){
super(pattern);
}
/* (non-Javadoc)
* 核心: 主要的就是扩展SearchTerm的match(Message message) 方法
* @see javax.mail.search.SearchTerm#match(javax.mail.Message)
*/
public boolean match(Message message){
String subject = "";
//以下使用自定义的类MimeMessageParser类来实现对MimeMessage的解析
//来获得特定邮件的主题
MimeMessageParser mmp = MimeMessageParser.getMessageParser((MimeMessage)message);
try{
//调用MimeMessageParser类的getSubject()方法来获得邮件的主题
subject = mmp.getSubject();
}catch(Exception ex){
//ignore exception
return false;
}
if(subject == null) return false;
return super.match(subject);
}
//注意一定要覆写StringTerm的equals(Object object)方法,具体理由请参看Effective Java
public boolean equals(Object obj) {
if (! (obj instanceof JSubjectTerm)) {
return false;
}
return super.equals(obj);
}
}
看完之后是不是感觉很简单啊!最主要的就是看你具体需要的是扩展SearchTerm还是它的
子类比如我自定义的JAttachTerm就是扩展JavaMail的SearchTerm的。
注:在我以前发表的文章中有关于邮件解析的代码,虽然有一些问题,但作为参考我觉得
已经可以了,有很多热心的朋友问我可不可以提供MimeMessageParser.java的第二版的源
代码,这个我可能暂时不会提供,不过我会尽快把编译过的类文件提供给大家,供大家来
测试使用。
顺便说一声,完全由我自己编写的基于java的企业级的邮件系统很快就要和大家见面了,希望大家多多支持。