MAIL内容搜索.doc_第1页
MAIL内容搜索.doc_第2页
MAIL内容搜索.doc_第3页
MAIL内容搜索.doc_第4页
MAIL内容搜索.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

package webmail.mail.search;import javax.mail.*;import java.util.Iterator;import java.util.Date;import java.util.HashSet;import java.util.ArrayList;import java.util.Calendar;import java.util.Properties;import ernet.*;import javax.mail.search.*;import webmail.mail.search.PersonalTerm;import webmail.mail.search.JAttachTerm;import webmail.mail.search.JBodyTerm;import webmail.mail.*;import webmail.mail.MimeMessageParser;/* * description: 一个简单的邮件查找类,用来查找特定主题的邮件,特定日期,或者 * 是包含有附件的邮件 * lastmodify: 2004-10-09 * 注: JavaMail API中的javax.mail.search包中的BodyTerm和AttachTerm在使用时 * 有问题,这里使用我扩展SearchTerm的JBodyTerm和JAttachTerm,同时由于javax. * mail.search包中的SubjectTerm取邮件主题直接调用JavaMail的getSubject()方法 * 这样得到的结果有时候不正常,可以扩展SearchTerm来定义自己的Term(这个是下 * 一篇文章要写的内容) * author wang weiping of BeiJing flow.Inc * version v1.0.1 */public class MessageQuerier private String body = ; private ArrayList list = new ArrayList(); private int comparison = ComparisonTerm.EQ; public static final String OR = or; public static final String AND = and; /默认构造方法 public MessageQuerier() public void setComparison(String string) if (string.equals() comparison = ComparisonTerm.GE; else if (string.equals() comparison = ComparisonTerm.LE; public int getComparison() return parison; /* * 根据指定的字符串来查找所有邮件主题中包含此字符串的所有邮件 * param subject 邮件主题中所要包含的字符串 */ public void setSubject(String subject) SearchTerm subterm = new JSubjectTerm(subject); list.add(subterm); public void setRecipients(String recipients) try SearchTerm rterm = new RecipientTerm (Message.RecipientType.TO,new InternetAddress(recipients); list.add(rterm); catch(Exception ex) /ignore exception ex.printStackTrace(); public void setRecipientPersons(String recipientPersons) SearchTerm rpTerm = new RecipientPersonTerm(recipientPersons); list.add(rpTerm); /* * 根据指定的字符串来查找发件人地址中包含此字符串的所有邮件 * param from 设置发件人地址中要包含的字符串 */ public void setFrom(String from) try SearchTerm fterm = new FromTerm(new InternetAddress(from); list.add(fterm); catch (Exception ex) System.err.println(CoffeeWebMail reportException: + ex.toString(); ex.printStackTrace(); /* * Created 2004-10-9 * 此类用了自定义的查找器PersonalTerm,此类从javax.mail.search.StringTerm * 中继承下来,重写了StringTerm类的match()方法 * 根据发件人的姓名来查找此发件人发来的所有邮件 * param personal 设置发件人的姓名 */ public void setPersonal(String personal) try PersonalTerm pterm = new PersonalTerm(personal); list.add(pterm); catch (Exception ex) System.err.println(CoffeeWebMail reportException: + ex.toString(); ex.printStackTrace(); /* * Created 2004-10-09 * * 此类用到了自定义的查找器JAttachTerm,此类从javax.mail.search.SearchTerm中 * 直接继承下来,重写了SearchTerm类的match()方法 * 根据是否包含附件来查找匹配的所有邮件 * param flag 是否有附件的标志 true or false */ public void setAttachFlag(boolean flag) try SearchTerm jaterm = new JAttachTerm(flag); list.add(jaterm); catch (Exception ex) System.err.println(CoffeeWebMail reportException: + ex.toString(); ex.printStackTrace(); /* * Created 2004-10-09 * * 根据给定的字符串来查找邮件正文中包含此字符串的所有邮件 * param pattern 邮件正文要包含的字符串 */ public void setBodyText(String pattern) SearchTerm jbterm = new JBodyTerm(pattern); list.add(jbterm); / note: The dateFormat is eg: 2004-7-10 public void setReceiveDate(String date) int comparison = getComparison(); Date recdate = null; try recdate = getSearchDate(date); SearchTerm recterm = new ReceivedDateTerm(comparison, recdate); list.add(recterm); catch (Exception ex) System.err.println(CoffeeWebMail reportException: + ex.toString(); ex.printStackTrace(); public void setSentDate(String date) int comparison = getComparison(); Date sentdate = null; try sentdate = getSearchDate(date); SearchTerm recterm = new SentDateTerm(comparison, sentdate); list.add(recterm); catch (Exception ex) System.err.println(CoffeeWebMail reportException: + ex.toString(); ex.printStackTrace(); /* * 返回所有符合搜索条件的邮件数组 * return all messages that according the searchterm. * param-srchmodeand or or * param folder Folder 要搜索的邮件夹 * param srchmode String 搜索模式,搜索模式为其中之一: MessageQuerier.OR or MessageQuerier.AND * return Message 符合条件的所有消息数组 */ public Message getSrchMessages(Folder folder, String srchmode) SearchTerm sterm = null; Message msgs = null; /if(list.size() = 0) return null; SearchTerm sterms = new SearchTermlist.size(); try for (int i = 0; i 1) if (srchmode.equals(and) /debug info /System.out.println(and term :+sterms.length); sterm = new AndTerm(sterms); else if (srchmode.equals(or) sterm = new OrTerm(sterms); else if (sterms.length = 1) /debug info /System.out.println(sterms length is 1); sterm = sterms0; if (sterm = null) msgs = folder.getMessages(); else msgs = folder.search(sterm); catch (Exception ex) System.err.println(CoffeeWebMail reportException: + ex.toString(); ex.printStackTrace(); return msgs; /辅助方法 private Date getSearchDate(String date) String ymd = date.split(-); int year, month, day; Date srchdate = null; try year = Integer.parseInt(ymd0); month = Integer.parseInt(ymd1) - 1; day = Integer.parseInt(ymd2); Calendar cal = Calendar.getInstance(); cal.set(year, month, day); srchdate = cal.getTime(); catch (Exception ex) System.err.println(CoffeeWebMail reportException: + ex.toString(); ex.printStackTrace(); return srchdate; /一个测试代码 public static void main(String args) throws Exception String host = ; / String username = wwp_1124; /wwp_1124 String password = 3061643; / passwd Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Store store = session.getStore(pop3); store.connect(host, username, password); Folder folder = store.getFolder(INBOX); folder.open(Folder.READ_ONLY); MessageQuerier mq = new MessageQuerier(); /mq.setAttach(true); /mq.setAttachFlag(true); mq.setFrom(); /mq.setSubject(你好); /mq.setBodyText(测试); mq.setPersonal(林昌东); Message msgs = mq.getSrchMessages(folder, MessageQuerier.OR); System.out.println(msgs.length); for (int i = 0; i ); MimeMessageParser mmp = MimeMessageParser.getMessageParser( (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论