第六讲:使用Store查看邮件(2)
来源:互联网 发布:黑马软件科技有限公司 编辑:程序博客网 时间:2024/05/16 04:42
第六讲:使用Store查看邮件(2)
一、邮件接收程序编程实例
编程实例1:
功能:接收指定邮件账户中的电子邮件,并且打印出邮件的主题和发件人供用户浏览,由用户决定是否阅读。
public static void main(String[] args) throws Exception{//定义连接pop3服务器的信息String pop3Server = "pop3.163.com";String protocol = "pop3";String username ="XXX";String password ="XXX";Properties props = new Properties();props.setProperty("mail.store.protocol", protocol);props.setProperty("mail.pop3.host", pop3Server);Session session = Session.getDefaultInstance(props);//session.setDebug(true);Store store = session.getStore(protocol);store.connect(pop3Server,username, password); //pop3服务器登陆认证Folder folder = store.getFolder("inbox"); //获取用户的邮件夹folder.open(Folder.READ_WRITE); //设置对邮件账户的访问权限Message[] msgs = folder.getMessages(); //获得邮件账户中的所有邮件for(int i=0; i< msgs.length; i++){String subject = msgs[i].getSubject();String from = String.valueOf(msgs[i].getFrom()[0]);System.out.println("第"+(i+1)+"封邮件的主题是:"+subject+"\t 发件人为:"+from);System.out.println("你想阅读此邮件吗?(yes/no)");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String inputString = br.readLine();if("yes".equalsIgnoreCase(inputString)){msgs[i].writeTo(System.out); //输出邮件内容}}folder.close(false); //关闭邮件夹对象,若为ture则会删除哪些标记为删除的邮件store.close();}}
二、搜索邮件
JavaMail在javax.mail.search包中定义了一个用于创建搜索条件的SearchTerm类,应用程序创建SearchTerm类的实例对象后,就可以调用Folder.search(SearchTerm st)方法搜索邮件夹中符合搜索条件的所有邮件。SearchTerm是一个抽象类,JavaMail提供了22个实现子类以帮助应用程序创建不同的搜索条件,这22个类大致可以分为两大类型,如下:
1. 用于创建逻辑组合关系的类
1. 用于创建逻辑组合关系的类
AND条件(AndTerm类)
OR条件(OrTerm类)
NOT条件(NotTerm类)
Comparison条件(ComparisonTerm类)
2. 用于创建具体搜索条件的类
DATE条件(SentDateTerm类,ReceivedDateTerm类)
CONTENT条件(BodyTerm类)
HEADER条件(FromStringTerm类,RecipientStringTerm类,SubjectTerm类等)
例如:
搜索邮件中所有从"it315_test@sohu.com"或"it315_test@sina.com"发送过来的邮件,如下所示:
SearchTerm st = new OrTerm(
new FromStringTerm("it315_test@sohu.com"),
new FromStringTerm("it315_test@sohu.com")
);
Message[] msgs = folder.search(st);
搜索邮件夹中今天收到的并且是"it315_test@sina.com"这个邮箱地址发送过来的所有邮件
SearchTerm st = new AndTerm(
new FromStringTerm("it315_test@sina.com"),
new ReceivedDateTerm(ComparisonTerm.EQ , new Date())
);
Message[] msgs = folder.search(st);
ComparisonTerm类常用于日期类的比较中,它使用六个常量EQ(=)、GE(>=)、GT(>)、LE(<=)、LT(<)、NE(!=)
搜索邮件中所有从"it315_test@sohu.com"或"it315_test@sina.com"发送过来的邮件,如下所示:
SearchTerm st = new OrTerm(
new FromStringTerm("it315_test@sohu.com"),
new FromStringTerm("it315_test@sohu.com")
);
Message[] msgs = folder.search(st);
搜索邮件夹中今天收到的并且是"it315_test@sina.com"这个邮箱地址发送过来的所有邮件
SearchTerm st = new AndTerm(
new FromStringTerm("it315_test@sina.com"),
new ReceivedDateTerm(ComparisonTerm.EQ , new Date())
);
Message[] msgs = folder.search(st);
ComparisonTerm类常用于日期类的比较中,它使用六个常量EQ(=)、GE(>=)、GT(>)、LE(<=)、LT(<)、NE(!=)
编程实例2
功能:搜搜并删除符合条件的邮件
public static void main(String[] args) throws Exception {if(args.length != 2){System.out.println("Wrong Input Parameter");System.exit(1);}String fromTerm =args[0];String subjectTerm = args[1];//System.out.println(args[0] + " "+args[1]);String pop3Server = "pop3.163.com";String protocol = "pop3";String usernmae = "XXX";String password ="XXX";Properties props = new Properties();props.setProperty("mail.pop3.host", pop3Server);props.setProperty("mail.store.protocol", protocol);Session session = Session.getDefaultInstance(props);session.setDebug(true);Store store = session.getStore(protocol);store.connect(pop3Server, usernmae, password); //连接接收邮件服务器Folder folder = store.getFolder("inbox");folder.open(Folder.READ_WRITE);//创建搜索对象SearchTerm st = new OrTerm(new FromStringTerm(fromTerm),new SubjectTerm(subjectTerm));Message[] msgs = folder.search(st);System.out.println("找到"+msgs.length+"封符合搜索条件的邮件");if(msgs.length ==0){System.exit(1);}for(int i=0; i< msgs.length; i++){String from = msgs[i].getFrom()[0].toString();String subject = msgs[i].getSubject();System.out.println("发件人:"+from+"; 主题:"+subject);System.out.println("你想要删除这封邮件吗?(yes/no)");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String input = br.readLine();if("yes".equalsIgnoreCase(input)){msgs[i].setFlag(Flags.Flag.DELETED, true); //标记为删除}}folder.close(true); //退出邮件夹后删除标记为“删除“的邮件store.close();}
0 0
- 第六讲:使用Store查看邮件(2)
- 第六讲:使用Store查看邮件(1)
- 【Java mail 入门教程】第六讲 邮件回复
- 【Java mail 入门教程】第六讲 邮件回复
- 第六讲 使用注解开发
- 第四讲:使用Transport类发送邮件(2)
- 第六讲 使用内部对象系统
- 第六讲
- 第六讲
- 机器学习中使用的神经网络第六讲笔记
- 使用TELNET手工操作 IMAP 查看邮件
- 第六讲 堆栈操作
- 第六讲 文件管理
- 第六讲 JAVA API
- 第六讲 菜单设计
- Android第六讲--Intent
- 第六讲,菜单编程
- shell编程第六讲
- 粒子滤波器原理介绍-----本博客部分内容源自西安交大蔡远利教授的随机系统滤波与控制课程讲义
- Autodesk Character Generator
- 忘了
- vb.net获取txt某段字符后的字符
- 常用SQL语句-Part1
- 第六讲:使用Store查看邮件(2)
- ORA-12638: 身份证明检索失败 的解决办法
- 发乎
- CDC类详细说明
- How to Work with FBX SDK
- VB.Net 与 C#代码 转换工具(网页版)
- kmp算法小结
- Flex4 uint颜色值和16进制颜色互转
- opencv二值化