由于pop3协议不支持对已读未读邮件的标记,因此,要判断一封pop邮箱中的邮件是否是新邮件必须与邮件客户端联合起来才能做到。其原理是,每个服务器都会给每封邮件产生一个唯一的uid,客户端把读到的uid与本地保存的uid比较,如果本地没有这个uid,则这封邮件是新的,否则就是旧邮件。一般的邮件客户端,如 outlook express、foxmail等,都是用这种方法实现的。大约步骤如下:
- 客户端读取邮箱里所有邮件的 uid 列表(通过命令 UIDL 可以查看);
- 把uid列表与本地保存的uid列表相比较;
- 如果本地已存在,则比较下一个邮件uid;
- 如果本地不存在此uid,则下载此邮件,并保存此邮件的uid在本地;
大致的java代码实现如下:
URLName url = new URLName("pop3", host, port, "", user, password);
Session session = Session.getInstance(System.getProperties(),null);
Store store = session.getStore(url);
POP3Folder inbox = null;
try {
store.connect();
inbox = (POP3Folder) store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
FetchProfile profile = new FetchProfile();
profile.add(UIDFolder.FetchProfileItem.UID);
Message[] messages = inbox.getMessages();
inbox.fetch(messages, profile);
for (int i = 0; i < messages.length; i++)
System.out.println(inbox.getUID(messages[i]));
} finally {
try{
inbox.close(false);
}catch(Exception e){}
try{
store.close();
}catch(Exception e){}
}
参考:
1、http://www.javayou.com/diary/390
2、http://topic.csdn.net/t/20010905/16/273295.html
分享到:
相关推荐
Python实现下载pop3邮件保存到本地的知识点涉及到使用Python进行网络编程,利用poplib模块与邮件服务器交互,以及使用正则表达式处理邮件内容。以下是详细介绍: 1. poplib模块介绍: poplib是Python标准库的一部分...
4. **查询邮件数量**:通过调用`GetMessageCount()`方法获取邮箱中的邮件总数。 5. **遍历并下载邮件**:对于每个邮件,使用`GetMessage()`方法获取邮件对象。这个对象包含了邮件的头部信息和内容。 6. **获取邮件...
在这个项目中,开发者创建了一个程序,能够连接到POP3(Post Office Protocol version 3)邮件服务器,进行一系列邮件操作。以下是对这一实现的详细解释: 1. **POP3协议**:POP3是一种互联网标准协议,用于从邮件...
在本文中,我们将深入探讨如何使用Qt库中的POP3功能来实现自动登录邮箱、接收邮件以及下载附件。Qt是一个跨平台的应用程序开发框架,广泛应用于C++编程,它提供了丰富的功能,包括网络通信模块,使得我们可以方便地...
在本文中,我们将深入探讨POP3协议的工作原理、如何使用它登录163邮箱以及如何解析包含Base64和UTF-8编码的邮件。 1. **POP3协议简介** POP3是一种客户端/服务器架构的协议,用户通过POP3客户端连接到邮件服务器,...
在“pop3.c”源代码中,可能包含了使用`libnids`库来监听和解析POP3会话的代码片段,包括识别和处理各种POP3命令,以及可能的错误处理和日志记录。通过这个程序,开发者可以深入理解POP3协议的工作原理,也可以用于...
POP3是一种广泛使用的邮件接收协议,它允许用户从邮件服务器上下载新邮件到本地计算机。 在"vb接收电子邮件email的程序(pop3协议),支持附件.zip"这个项目中,开发者已经创建了一个VB应用程序,能够通过POP3协议获取...
`Pop3Client`提供了`GetMessageCount`方法,用于获取邮箱中的邮件数量。此外,`GetMessage`或`GetMessages`方法可以用来获取单个或所有邮件的详细信息。 ```csharp int messageCount = pop3Client....
这个库支持多种邮件协议,如 SMTP(简单邮件传输协议)用于发送邮件,POP3(邮局协议)和 IMAP(因特网消息访问协议)用于接收邮件。在这个资源中,我们将探讨如何使用 JavaMail 实现邮件的发送、接收、查看邮件数量...
2. **SMTP接收**:目标SMTP服务器确认接收邮件,并将其存储在收件人的邮箱中。 3. **POP3检索**:收件人使用POP3客户端连接到ISP,发起邮件下载请求,邮件从邮件服务器转移到本地计算机。 理解SMTP和POP3的工作原理...
删除邮件服务器中第几个邮件。从1开始。 procedure Disconnect; override; 关闭连接。 TIdMessage组件简介 TIdMessage用来支持邮件消息协议,如POP3,SMTP,NNTP等。TIdMessage支持多用途Internet邮件扩展(MIME...
SMTP (Simple Mail Transfer Protocol) 和 POP3 (Post Office Protocol version 3) 是电子邮件系统中的两个核心协议,分别用于处理邮件的发送和接收。 SMTP 主要负责邮件的传递,它使用TCP端口25来建立连接。在使用...
当用户通过POP3客户端登录到服务器时,它会与服务器建立一个安全的连接,然后执行一系列命令来管理邮箱中的邮件。这些命令包括列出邮件、读取邮件、删除邮件等。然而,如标题所示,这个特定的“pop3高级程序开发”...
在描述中提到的“具备垃圾邮件过滤功能的邮箱”是一个基于JavaMail实现的邮件系统,其核心亮点在于增加了垃圾邮件过滤机制,以提高用户对邮件的管理效率。 首先,这个邮箱系统实现了邮件的基本功能,包括收发邮件。...
3. 邮件转发功能:这通常涉及解析邮件头,识别并处理转发指令,然后使用SMTP协议将邮件重新发送到新的目的地。 4. 用户认证:为了安全,邮件服务器通常需要验证用户身份,这可能包括简单的用户名和密码验证,或者更...
这可能涉及到对邮件结构的理解,以及使用`email`库中的方法来分割和处理邮件的不同部分。 总结起来,这个实验涵盖了以下知识点: 1. 计算机网络中的电子邮件系统,特别是POP3协议的工作原理。 2. 使用Python的`...
POP3服务器通常监听110号端口,用户通过客户端软件如Foxmail、Outlook Express登录邮箱,POP3服务器则会检查对应账户的邮件存储空间。IMAP协议提供了一种更高级的邮件管理方式,用户可以在不下载邮件的情况下预览和...
在VC++环境中,实现POP3(Post Office Protocol version 3)和SMTP(Simple Mail Transfer Protocol)协议是构建电子邮件客户端或服务器的关键步骤。POP3主要用于从邮件服务器接收邮件,而SMTP则用于发送邮件。这里...
本文将详细讲解如何使用Java来实现这个功能,主要涉及的知识点包括:JavaMail API、邮件服务器的通信协议(如POP3和SMTP)、SSL/TLS加密以及邮箱验证的逻辑。 首先,JavaMail API是Java中用于处理邮件的库,它提供...
在发送邮件时,SMTP先判断邮件是否需要转发,如果是本地邮件,直接投递到收件人的邮箱;若需转发,它查询DNS找到收件人邮件服务器的MX记录,然后建立SMTP连接进行邮件传递。SMTP通过一系列命令如MAIL和RCPT确认邮件...