在 JavaMail 中,可以不像上面文章那样子调用 Folder.getMessages() 方法把邮件夹中的所有都返回,而是可以根据给定的一些条件过滤搜索出我们想要的邮件,之后再对进行获得的邮件进行操作。现在的邮箱大多都支持邮件搜索这一功能了。
要使用搜索过滤功能,必须用到 java.mail.search 包中的 SearchTerm 抽象类。在这个包中,我们可以使用其他具有不同组合关系的子类和具有不同搜索条件的类来进行操作。
1、逻辑组合关系的子类有:AndTerm 类、OrTerm 类、NotTerm 类、ComparisonTerm 类,它们都是 SearchTerm 抽象类的具体子类;
2、具体搜索条件的类有:DateTerm 类、BodyTerm 类、HeaderTerm 类,这几个都是抽象类,具体应用时应该由其对应的子类来实现。
看一些 JavaMail 帮助文档中关于 java.mail.search 包中的类集:
程序要求:
搜索出 testhao@126.com 邮箱中发件人地址为
test_hao@sina.cn ,主题为 “测试1”的邮件,并由用户输入是否设置删除标记,在断开网络连接(即程序运行结束)之后 POP3 服务器会将设置有删除标记的邮件删除掉。而设置删除标记,需要用到 Message.setFlag() 方法。
目前我们往 testhao@126.com 邮箱发送了 6 封邮件,如下图,其中第一封主题为“测试1”的邮件是由
test_hao@163.com 发送的,其他的 5 封由
test_hao@sina.cn 所发。
代码实现:
- importjava.io.BufferedReader;
- importjava.io.InputStreamReader;
- importjava.util.Properties;
- importjavax.mail.Flags;
- importjavax.mail.Folder;
- importjavax.mail.Message;
- importjavax.mail.Session;
- importjavax.mail.Store;
- importjavax.mail.search.AndTerm;
- importjavax.mail.search.FromStringTerm;
- importjavax.mail.search.SearchTerm;
- importjavax.mail.search.SubjectTerm;
- publicclassSearchMails{
- publicstaticvoidmain(String[]args)throwsException{
- Stringpop3Server="pop3.126.com";
- Stringprotocol="pop3";
- Stringuser="testhao";
- Stringpwd="123456";
-
- Propertiesprops=newProperties();
- props.setProperty("mail.store.protocol",protocol);
- props.setProperty("mail.pop3.host",pop3Server);
-
- Sessionsession=Session.getInstance(props);
- session.setDebug(true);
-
- Storestore=session.getStore();
- store.connect(pop3Server,user,pwd);
-
- Folderfolder=store.getFolder("inbox");
- folder.open(Folder.READ_WRITE);
-
-
-
SearchTermst=newAndTerm(
- newFromStringTerm("test_hao@sina.cn"),
- newSubjectTerm("测试1"));
-
-
分享到:
相关推荐
JavaMail是一种开源的Java库,它允许开发人员在Java应用程序中发送和接收电子邮件。IMAP(Internet Message Access Protocol)是一种标准的邮件访问协议,用于从邮件服务器检索邮件。Exchange 2007是微软的企业级...
2. **POP3 协议**:邮局协议第 3 版(Post Office Protocol version 3)主要用于接收邮件。邮件客户端通过 POP3 从邮件服务器下载邮件。POP3 支持离线模式阅读已下载的邮件,但其功能相对有限。 3. **IMAP 协议**:...
2. **接收邮件**:支持POP3和IMAP协议,能够接收来自不同邮件服务器的邮件,并对这些邮件进行操作,如读取、删除等。 3. **邮件处理**:包括解析邮件内容、管理附件等功能。 #### 三、JavaMail的核心类与接口 1. *...
我们学习了如何使用 `@EnableScheduling` 和 `@Scheduled` 注解来实现定时任务,并使用 JavaMail API 来连接邮件服务器和接收邮件。 knowledge points: * Spring Boot 定时任务的实现 * 使用 `@EnableScheduling` ...
JavaMail是一个开源库,它提供了用于发送、接收和操作电子邮件的标准API。而James(Apache James)则是一个完整的邮件服务器,它支持SMTP、POP3和IMAP协议,同时也包含了邮件存储、过滤和管理等功能。 **JavaMail的...
它可以用来构建基于标准的电子邮件客户端,并且支持多种互联网邮件协议,如SMTP(用于发送邮件)、POP(用于接收邮件)、IMAP(提供邮件访问和管理)、MIME(定义邮件格式)、NNTP(用于新闻组通信)、S/MIME(安全...
JavaMail API是Java平台上用于处理电子邮件的一套强大的库,它为开发者提供了丰富的功能,使得在应用程序中发送和接收邮件变得简单。本文将深入探讨JavaMail API的各个方面,帮助你理解和掌握这一关键工具。 首先,...
在JavaMail邮件管理系统中,用户还可以执行其他高级操作,比如创建、删除和重命名邮件文件夹,管理邮件标记,处理邮件搜索等。同时,为了提供良好的用户体验,系统通常会封装这些底层操作,以图形化界面展示,如...
4. **邮件接收**:JavaMail通过POP3(邮局协议)或IMAP(Internet消息访问协议)协议接收邮件。使用`Store`接口建立连接,打开`Folder`,然后通过`Folder.getMessage()`方法获取邮件列表。邮件内容可以使用`...
8. **邮件过滤和搜索**:除了基本的邮件发送和接收,JavaMail还提供了邮件过滤和搜索功能。开发者可以通过`Folder`对象的`getMessages()`方法获取所有邮件,然后使用`Message`的属性进行筛选和查找。 9. **事件监听...
- 对于接收邮件,需要处理邮件的同步和异步策略,以及垃圾邮件过滤。 JavaMail-master 压缩包很可能包含了项目的源代码,通过查看和学习这个项目,你可以深入了解 JavaMail 的使用方法,包括如何设置属性、创建和...
在JavaMail API中,接收邮件的过程涉及到多个核心类和接口,这些类和接口共同构成了JavaMail的邮件接收体系结构。本文将深入讲解如何使用JavaMail API接收邮件,以及涉及的主要类和方法。 首先,JavaMail API中的`...
9. **邮件搜索和管理**:JavaMail提供接口来搜索邮件,如按日期、标签等条件查找,以及对邮件进行标记、移动、删除等操作。 10. **事件监听**:JavaMail允许添加监听器来跟踪邮件状态的变化,例如新邮件到达时的...
JavaMail API是Java平台上用于处理电子邮件的标准API,它提供了一组接口和类,使得开发者能够方便地发送、接收和管理邮件。此API不仅支持SMTP(简单邮件传输协议)、POP3(邮局协议版本3)和IMAP(因特网消息访问...
3. 邮件搜索:快速查找历史邮件,支持按主题、发件人、日期等多种条件进行搜索。 4. 多账号支持:用户可以添加多个邮箱账号,方便切换和管理不同邮箱的邮件。 5. 邮件同步:对于IMAP4协议,系统可以实时同步邮件...
10. **POP3和IMAP支持**:JavaMail API不仅支持SMTP(发送邮件),还支持POP3(接收邮件)和IMAP(更高级的邮件访问协议)。 以上只是一部分JavaMail API的关键概念和功能。通过阅读提供的英文帮助文档,开发者可以...
POP3(邮局协议第3版)和IMAP(Internet邮件访问协议)分别用于接收邮件,但它们在操作方式上存在显著差异,前者通常涉及下载并删除服务器上的邮件,而后者则支持在多设备间同步邮件。MIME(多用途Internet邮件扩展...
- 通过JavaMail API接收邮件,解析邮件内容,获取邮件的发件人、收件人、主题、正文等信息。 6. 邮件分类: - 根据用户选择的分类规则,将接收到的邮件分配到相应的文件夹或添加标签。 7. 垃圾邮件过滤: - ...