上篇文章我寫的是關于如何用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的企業級的郵件系統很快就要和大家見面了,希望大家多多支持。