Z
zpselect
Unregistered / Unconfirmed
GUEST, unregistred user!
我现在在做一个邮件收发的程序,但是遇到一个问题,如果只下载新的邮件,我想这个问题很多人都在烦恼着,不知道你将此问题解决了没有?
我想了一个死方法,但这个方不理想!
1:首先第一次收发时是将邮件所有的邮件都下载本地表中,
2:第二次收发时,取得本地表最大的邮件日期,循环所有的POP邮件个数,如果IdMessage.Date>MaxDate(本地表最大的日期)那么将该条邮件记录插入到本地表中,以此类推!
这个方法我已经成功实现收到邮件内容到本地表中的功能
但是有一点不知道你注意到了没有?每一次点击收到时POP都会循环其所有的邮件个数,如果邮箱中的箱件个数非常大的话,会花费很长的时间(如果,实际上邮件中只有一封新邮件),可否有办法在POP就筛选了邮件的个数,如:将POP中日期>MaxDate,筛选出来,再循环(即只有新的邮件了)!不知道你没有这样的主法?
for i := 1 to POP.CheckMessages do (在此之前筛选日期> MaxDate)
begin
IdMessage.Clear;
POP.Retrieve(i, IdMessage);
if IdMessage.Date > MaxDate then
table.append;
..........
end;
我想了一个死方法,但这个方不理想!
1:首先第一次收发时是将邮件所有的邮件都下载本地表中,
2:第二次收发时,取得本地表最大的邮件日期,循环所有的POP邮件个数,如果IdMessage.Date>MaxDate(本地表最大的日期)那么将该条邮件记录插入到本地表中,以此类推!
这个方法我已经成功实现收到邮件内容到本地表中的功能
但是有一点不知道你注意到了没有?每一次点击收到时POP都会循环其所有的邮件个数,如果邮箱中的箱件个数非常大的话,会花费很长的时间(如果,实际上邮件中只有一封新邮件),可否有办法在POP就筛选了邮件的个数,如:将POP中日期>MaxDate,筛选出来,再循环(即只有新的邮件了)!不知道你没有这样的主法?
for i := 1 to POP.CheckMessages do (在此之前筛选日期> MaxDate)
begin
IdMessage.Clear;
POP.Retrieve(i, IdMessage);
if IdMessage.Date > MaxDate then
table.append;
..........
end;