工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > Java > 正文
利用javamail收取Hotmail的退信
[文章信息]
作者:zhaozexin
时间:2005-02-13
出处:blog
责任编辑:方舟
[文章导读]
Hotmail 是我最常用的Email Client。虽然时下hotmail的容量是小了些
advertisement
热点推荐
· 巧用FlashGet保管注册码
· PS色彩调整简明教程:历史记录画笔
· 轻松控制ActiveX插件安装
· 2004年杀毒软件特色功能点评
· Photoshop雕刻各式玫瑰花
[正文]
  Hotmail 是我最常用的Email Client。虽然时下hotmail的容量是小了些,速度也常常慢得让人不禁问候盖茨的母亲。但不可否认,它功能相当丰富,也比较稳定。尤其它的页面设计更是我等web编程人员的重要参照。

  不象很多的POP3服务器,hotmail 实现了邮件传送状态通知(multipart/report)。我以前写的邮件客户端只支持收取 multipart/related、multipart/alternative和multipart/mixed 等多媒体类型的邮件,其他的因为不常见,我都忽略了。

  客户不答应了,那还有什么好说的,还有什么比让客户满意更重要的事情呢,在没买单之前。

  multipart/report 邮件类型的介绍参见 RFC1892,Sun的中文 Javamail Faq 里也有相关的说明,我摘录如下:

  问. 当消息不能被传送时,就会返回一个失败消息。我如何检测这些“回弹”消息?

  答:虽然有一个 Internet 标准用于报告这样的错误(multipart/report MIME 类型,参阅 RFC1892),但还没有广泛实现它。RFC1211 深入讨论了这个问题,包括了大量的例子。

  在 Internet 电子邮件中,特定的邮箱或用户名是否存在,只能由传送消息的最终服务器决定。消息可能通过几个中继服务器(它们不能检测错误),然后再到达最终服务器。通常,当最终服务器检测到这一错误,它会返回一个消息给原始消息的发送人,指出失败的原因。有许多 Internet 标准讨论了这种传送状态通知 (Delivery Status Notifications),但大量服务器不支持这些新标准,相反使用特别技术来返回这种错误消息。这使得将“回弹”消息与产生问题的原始消息相互关联起来非常困难(注意,这个问题与 JavaMail 完全无关)。

  有许多技术和试探法用于处理这一问题,但它们都不是完美的。一种技术是 Variable Envelope Return Paths,http://cr.yp.to/proto/verp.txt 描述了这一技术。

  我修改了程序,也只是作了些简单的处理,代码如下:

private void parseMultipart(Multipart multipart) throws Exception {
 for (int i = 0, n = multipart.getCount(); i < n; i++) {
  BodyPart part = multipart.getBodyPart(i);
  String disposition = part.getDisposition();

  if (part.isMimeType("multipart/*")) {
   this.parseMultipart((Multipart) part.getContent());
  } else if (part.isMimeType("text/html")) {
  //处理文本内容
  }
  /******* 处理附件,图片等等 ********/
  } else if (part.isMimeType("message/delivery-status")) {
   part.setFileName("details.txt"); //仿照outlook,details.txt 内容即传送状态通知的邮件头信息
   saveAttachedFile(part);
  } else if (part.isMimeType("message/rfc822")) {
   MimeBodyPart mbp = new MimeBodyPart(part.getInputStream());
   part.setFileName(mbp.getHeader("Subject", null) + ".eml"); //仿照outlook,用退件的标题做文件名
   saveAttachedFile(part);
  }
 }
}


  如果要做得更友好,还可以做很多改进,比如根据退信找出已发送文件夹中的原件,或者激发一个通知事件等等。客户并不需要,我还是不要自作多情了。

  大家都知道,hotmail 不是用pop3协议收信,而是用webdav协议。用java收发 hotmail 的邮件 ,参见《通过JavaMail访问Hotmail邮箱》。

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 微软数个“严重”系统漏洞可能被黑客利用
  • 鼎好节后率先开门迎客 客流约达三成(多图)
  • 雅虎将成为集通讯娱乐为一身的多媒体公司
  • 短信收费猫腻多 04年短信费用投诉上升44.9%
  • 一首流行歌让“宁夏”成网上搜索热门关键词
  • 从丢手绢到生化危机 电子游戏编年史(多图)
  • 信产部下达硬指标 今年百亿元企业要达26家
  • 大屏幕彩电冲破价格底线 等离子降幅最大
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索