日期:2014-05-20  浏览次数:20754 次

有谁知道foxmail,outlook等程序是如何辨认新邮件的?
一般服务器上有很多邮件,有些已经收了,有些没收过的,foxmail,outlook等软件如何知道哪些是未收过的新邮件??  
难道它们把邮件的信息保存到本地,然后对比服务器上的?   还是有一种方法可以直接把信息保存在服务器上?

------解决方案--------------------
新邮件因该有特殊的标记
------解决方案--------------------
http://www.microsoft.com/technet/prodtechnol/exchange/ZH-CN/Guides/E2k3TechRef/fbc63ab6-f17c-4526-a96a-2013b5baf08d.mspx?mfr=true
------解决方案--------------------
一个邮件服务器在处理每封邮件的时候会给它分配一个独一无二的编号(UID),这个编号是一个正的长整数,一般这是一个递增的值,有关于这个UID可以参照RFC 2060的详细说明。利用这个UID我们就可以实现邮件的读状态的处理。首先我们必须在客户端保存一个一对多的关系表,也就是一个邮箱地址对应多个邮件的 UID,以后在收取每封邮件的时候判断该邮件的UID是否已经在本地保存,如果已保存则该邮件已读,否则的话这是一封新邮件,并把该新邮件的UID加入本地继续保存。可能你会觉得这样的话岂不是要保存很多邮件的编号,会不会占用空间之类的怀疑,我想这应该是一个权宜之策,不过UID仅仅是一个长整数,浪费不了多大的空间。
------解决方案--------------------
我写过企业web mail,目前在用,是通过UID和本地已接收的邮件UID比较来判断的
------解决方案--------------------
楼主首先应该弄懂:你是想用那些软件相同的方式,还是寻求一种尽量合理的方式。
上面有朋友说:每次重装系统后,outlook总是把信箱里的信全收下来,包括以前读过的。
这样好吗?显然很久之前读过的信已经没有再下载阅读的价值了。
所以,我觉得更好的方式是采用一种混合方式:

首先软件应该有一个存储已下载到本地的邮件的UID的信息库(无论是文本文件还是数据库),并且支持导入。总之,重装系统和重装软件之后,都可以继承原来的数据信息。

然后,在收取邮件时,先读取UID,与本地邮件信息相比较,相同则不读具体内容(可以只读邮件头信息,包括UID、标题、阅读状态、发送者、日期等,如果用户选择阅读再即时读取,也可以让用户来改变邮件的阅读状态),如果不同,再看阅读状态,如果是已阅读,仍象上面一样只读取和显示邮件头信息(有时会通过WEB登录阅读邮件,这样的邮件虽然不在本地信息中但也没必要下载),如果是未阅读,这时才需要下载整个邮件的信息与内容。