/** * CrazyItTest * 使用JavaMail 搜索并删除指定邮件示例 */ package com.labci.javamail.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Properties; import javax.mail.Flags; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Store; import javax.mail.search.AndTerm; import javax.mail.search.FromStringTerm; import javax.mail.search.SearchTerm; import javax.mail.search.SubjectTerm; /** * @author Bill Tu(tujiyue/iwtxokhtd) * May 27, 2011[10:04:20 PM] * */ public class SearchEmailTest { private static final String PROTOCOL = "pop3"; private static final String HOST = "pop3.163.com"; private static final String USER = "iwtxokhtd"; private static final String PASS="123456"; private static Session getMailSession(){ Properties props=new Properties(); props.put("mail.store.protocol", PROTOCOL); props.put("mail.pop3.host", HOST); Session session=Session.getDefaultInstance(props); return session; } private static void searchEmail() throws MessagingException, IOException{ Store store=getMailSession().getStore(); store.connect(HOST,USER,PASS); Folder receiveFolder=store.getFolder("inbox");//对于POP3协议此参数值只能是inbox receiveFolder.open(Folder.READ_WRITE);//设置收件夹打开后的读写权限 int messageCount=receiveFolder.getMessageCount(); System.out.println("总共拥有邮件数:"+messageCount); if(messageCount>0){ //搜索指定条件的邮件,还有许多其它的搜索条件,请查阅相关的API SearchTerm search=new AndTerm(new FromStringTerm("ordernotifier@sendmail.dangdang.com"), new SubjectTerm("订单8480917155已收到,正在处理中")); Message []messages=receiveFolder.search(search); int count=messages.length; if(count<=0){ System.out.println("对不起,没搜到你要的邮件"); }else{ System.out.println("共搜索到"+count+"封符合条件的邮件!"); for(Message msg:messages){ System.out.println("发件人:"+msg.getFrom()[0]+",主题为:"+msg.getSubject()); System.out.println("您是否要删除此邮件?若要请输入yes:"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String input=br.readLine(); if(input!=null && !"".equals(input) &&"yes".equals(input.trim())){ //执行后面的关闭才会真正删除掉此邮件 msg.setFlag(Flags.Flag.DELETED, true); } } } } receiveFolder.close(true);//关闭邮件夹对象 store.close();//断开连接 } /** * @param args * @throws IOException * @throws MessagingException */ public static void main(String[] args) throws MessagingException, IOException { searchEmail(); } }