在为POP3邮箱使用PHP的IMAP功能时,如何仅查找“新”消息?

时间:2010-11-07 19:57:06

标签: php email imap pop3

我正在使用PHP的IMAP功能从POP3邮箱中检索邮件。我想知道有什么方法可以将新消息与旧消息区分开来吗?

不幸的是我不能只删除因为需要留在邮件服务器上而被检索的那些,所以我现在想知道我每次连接后,我怎样才能找到新的或者能够告诉除了我以前检索过的旧的那些之外新的那些?

我知道每条消息都附有一个UID&我可以使用它..但是我已经读过如果删除消息,这可能会改变;因为可以从轨道上的服务器删除消息。

2 个答案:

答案 0 :(得分:1)

很好找到了..

  

基本上,pop3协议不支持此功能。但是,你   可以用message-id实现这个。 Message-Id是电子邮件的唯一标识符   POP3服务器。您的应用程序可以通过GetMsgID获取指定电子邮件的消息ID   POPMAIN对象的方法。

     

首先,您的应用程序应记录检索到本地的电子邮件的消息ID   消息ID列表。下次检索电子邮件之前,请比较本地message-id   使用远程消息ID。如果您的邮件中存在此邮件ID   本地消息ID列表,然后它是旧的,否则它是新的。

虽然我很确定我之前读过并不是所有的客户都会返回message_id ...任何人都知道这是否正确?

答案 1 :(得分:0)

这对我有用:

import numpy as np
import matplotlib.pyplot as plt

# Data
Lat = np.array([-65.62282562, -65.62266541, -65.62241364, -65.62398529, -65.62410736])
Lon = np.array([145.28251648, 145.38883972, 145.49528503, 121.4509201, 121.55738068])
X=np.array(Lat[:]).tolist()
Y=np.array(Lon[:]).tolist()
C = np.array([0., 0.5, 2, 3, 0])
C = np.array(C[:]).tolist()
# Plot
plt.scatter(X, Y, c=C, s=10)

参考:https://www.electrictoolbox.com/php-imap-unread-messages/