`
huzhenyu
  • 浏览: 192690 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

做邮件客户端遇到一个很窝火的问题

    博客分类:
  • JAVA
阅读更多
背景:采用eclipse rcp技术,结合javamail基于IMAP,POP3协议,来做一个收发邮件的客户端小程序。为了提高效率想到本地储存,配合使用正反序列化等手断。现在遇到的最大的问题是。怎么判断服务器上的新邮件,我想到的思路是。采用时间来比较,首选获取本地存储的邮件距今最近的一封邮件,然后与inbox中的message比较。问题来了,当服务器上的邮件数据较大,附件多时。通过JavaMail API取每个message时基本上就直接暴掉了。(注:我使用的是163的邮箱,目前有810封邮件,其中有二十封左右邮件附件近15M)。参生这个的原因我的推测是,Message message[] = folder.getMessages(); message[0].getSentDate();上面第二句,调用时API底层会将整封邮件的内容下载到缓存,然后解析出相应的内容。其实我想要的发送邮件的时间,是在头部,有没有方法可以只取头部信息,这样的话速度应该会快很多。我在outlook下尝试过,性能很好。不知道他是怎么实现的。希望得到高手指点!先谢谢了。
3
2
分享到:
评论
4 楼 huzhenyu 2010-02-26  
用Socket去获得邮件头信息的方案,也考虑过。目前只想到能过手工验证,然后用指令来获取邮件。因为对TCP/IP通信协议不了解,目前也无成下手啊。楼上的要是有相关经验,还望指导下。
3 楼 huangjue 2010-02-26  
直接用Socket,只读取邮件头信息获得MessageId和本地比较即可,用Mail Api效率不高。
2 楼 huzhenyu 2010-02-25  
非常感谢天一的回答,之前我也是这么做的。但当时我调用了message[0].getSentDate()去取时间。就导致效率明显偏低,如果只是单纯去拿uid效率还是比较快的。估计拿UID时,底层API不会去folder中扫描每封邮件。但我发现uid的排序跟时间没有特定关联,如果这样的话,我还是需要把每个UID与本地存储中的UID进行冒泡比较,这样的话,如果邮件数量大,效率还是不高。不知道你有没有更好的方案。
1 楼 天一 2010-02-25  
通过uid判断,收邮件的时候判断一下,本地已经有的就是旧邮件,没有的就是新邮件,并把uid保存到本地。
最近也在做邮件客户端,这个问题也弄了很久。

相关推荐

    电子邮件客户端软件c#

    在本项目中,我们关注的是一个使用C#编程语言编写的电子邮件客户端软件。C#是一种面向对象的、现代的编程语言,由微软开发,广泛应用于Windows平台以及跨平台的.NET框架。 该项目包含以下组成部分: 1. 论文:这...

    java实现的邮件客户端

    Java邮件客户端是一个基于Java编程语言实现的程序,它允许用户发送和接收电子邮件,包括嵌入的图片和附件。这个客户端的实现是通过JavaMail API来完成的,这是一个强大的开源库,专门为处理邮件通信而设计。JavaMail...

    c# 邮件客户端Email_Client

    本项目“c# 邮件客户端Email_Client”是利用C#语言实现的一个邮件客户端程序,它允许用户收发电子邮件,是理解C#与网络通信交互的重要示例。 在构建邮件客户端时,主要涉及以下核心知识点: 1. **SMTP(Simple ...

    简单邮件客户端实现POP3和SMTP协议

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC)库来开发一个简单的邮件客户端,该客户端实现了POP3和SMTP协议,以便实现邮件的接收和发送。首先,我们需要了解这些基本概念: **POP3(Post ...

    电子邮件客户端_Java实现

    电子邮件客户端的实现是Java编程中的一个重要应用场景,它允许用户通过编程方式发送、接收和管理电子邮件。本项目提供了完整的源代码和可运行程序,方便开发者学习和使用。 在Java中实现电子邮件客户端,主要涉及到...

    C++发送邮件客户端源码

    标题中的"C++发送邮件客户端源码"指的是一个使用C++编程语言实现的程序,它能够作为客户端发送电子邮件。这样的程序通常需要与SMTP(Simple Mail Transfer Protocol)服务器进行交互,SMTP是互联网上用于发送电子...

    电子邮件客户端收发系统最详细版

    电子邮件客户端收发系统是计算机科学领域中的一个重要组成部分,它允许用户通过本地应用程序发送和接收电子邮件,而无需直接访问网络上的邮件服务器。这个最详细版的资料包提供了从设计到实现的全过程,对于学习和...

    一个手机收发邮件客户端

    标题中的“一个手机收发邮件客户端”表明这是一个利用C#编程语言开发的移动应用程序,用于在手机设备上接收和发送电子邮件。这样的应用通常涉及到网络通信、SMTP(简单邮件传输协议)和IMAP(因特网消息访问协议)等...

    邮件客户端监测工具

    邮件客户端监测工具是一种专门用于帮助用户解决在使用邮件客户端时遇到的收发问题的应用程序。在电子邮件通信中,客户端是用户与邮件服务器交互的界面,它负责发送、接收和管理邮件。当邮件客户端出现问题,如无法...

    Android邮件客户端 QQ 163 都可以

    通常,一个邮件客户端会包含以下几个主要部分: 1. 用户界面:用于输入和显示邮件信息,包括登录界面、邮箱选择、收件箱、草稿箱、发件箱、垃圾箱等视图。 2. 邮件服务API:与邮件服务器进行通信,获取和发送邮件,...

    邮件客户端代码

    根据提供的信息,我们可以总结出以下知识点: ### 邮件客户端代码分析 #### 1. 邮件客户端概述 邮件客户端是指用户用于发送、接收和...这对于理解邮件客户端的工作原理以及实际开发过程中遇到的问题都非常有帮助。

    Android邮件客户端Demo

    8. **错误处理和日志记录**:为了提高用户体验和便于问题排查,邮件客户端应具备完善的错误处理机制和日志记录系统,以便在遇到问题时能够及时反馈并定位故障。 综上所述,"Android邮件客户端Demo"是一个综合性的...

    ipad&iphone;邮件客户端设置

    首先,我们要知道iOS设备(如iPad和iPhone)内置了一个强大的邮件应用,它支持多种邮件协议,包括POP3和IMAP4,这两种协议分别用于接收和发送邮件。默认情况下,这个应用已经预设好了大多数主流的邮件服务提供商,...

    java邮件发送客户端

    在博客地址http://blog.csdn.net/wu2304211中,开发者分享了项目的详细描述,包括代码示例、配置步骤和可能遇到的问题,对于学习如何使用JavaMail API创建邮件客户端非常有帮助。如果你想要开发自己的邮件客户端,...

    smtp 邮件发送客户端

    它定义了如何在邮件服务器之间传输邮件,以及用户代理(如电子邮件客户端)如何通过服务器发送邮件。在本项目中,我们将探讨如何利用MFC(Microsoft Foundation Classes)库中的Socket功能来实现一个SMTP邮件发送...

    LMail简易邮件客户端

    总的来说,LMail简易邮件客户端是一个基于JMail组件的轻量级邮件应用,适合对邮件功能需求不高的用户。尽管它可能存在一些功能限制和bug,但其简洁的操作界面和基础的邮件收发功能仍能满足部分用户的日常需求。对于...

    邮件发送客户端(VC源码).rar

    总的来说,“邮件发送客户端(VC源码)”是一个涵盖网络编程、协议理解和用户交互的综合项目,对于学习和提升VC++编程技能,尤其是网络应用开发方面,具有很高的价值。通过深入研究源码,开发者可以更好地理解邮件发送...

    邮件发送程序客户端----VC实现

    7. **用户界面**:尽管题目中没有明确提到,但一个实际的邮件发送程序客户端通常会有用户友好的界面,让用户输入邮件信息,如收件人、主题和正文。这需要利用Win API中的窗口和控件创建功能。 综上所述,开发一个...

    MFC邮件客户端毕业设计改进版 南京理工大学 张鹏 20150414更新

    【MFC邮件客户端毕业设计改进版 南京理工大学 张鹏 20150414更新】 ...这个项目对于初学者来说是一个很好的学习实例,同时也为有经验的开发者提供了一个参考,展示了如何在MFC框架下实现一个完整的邮件客户端应用。

    foxmail-6邮件客户端

    5. **日程管理**:Foxmail不仅是一个邮件客户端,还集成了日历和任务管理功能,用户可以直接在软件内创建、查看和管理日程,提高了工作效率。相比之下,Outlook Express的日程管理功能较为基础。 6. **同步与备份**...

Global site tag (gtag.js) - Google Analytics