前言:
最近要着手手机上的邮件客户端的开发,想记录开发过程中的一些设计思路以及碰到的一些问题,也借此机会得到高人指点。
需求设计
1支持pop3,imap,smtp邮件协议
2支持多个收发任务并发执行
3支持查看下载过程中的邮件(如一封正文1K,附件1M的邮件,下载完邮件头时用户就可以看到此邮件,下载完正文就可立刻查看正文)
技术上的一些想法
1同时进行多个帐户的邮件处理比顺序处理它们速度更快(1服务器反应更快,2可以充分利用下载邮件的等待时间处理其它事务)
2网络通信采用异步模式,收发服务进程不阻塞,这样可以在收发的同时接收新的邮件收发任务。
设计上的心得
1控制逻辑尽量往上层放,下层为上层提供单一、明确的功能,如SOCKET的封装不应包含超时控制,以及一些与邮件相关的数据假设,但可以根据需要在上层封装超时,读行等。
问题:
先浏览一下各邮件协议的特性
目录 分段 标记 ...
pop3 no no no
imap yes yes yes
1我觉得最大的问题在于功能的定义、界面设计上
常用的PC邮件客户端且不论它功能强不强,好不好用,且论不同的客户端、不同的版本功能差异太大,如outlook expless, outlook2003, outlook2007,foxmail都有很大的不同,
a是否每帐户一个目录(outlook把所有的Pop3邮件都放在一个文件夹(本地文件夹),每IMAP帐户一文件夹,而foxmail每帐户一文件夹)
b imap帐户的邮件有标记功能,而pop3没有,在界面上可以把所有的邮件放在同一个列表,还是必须分开,
c 移动邮件同样也有上面的问题。