首 页 | 精品电影 | 音乐天堂 | 在线游戏 | Flash MTV | 三湘书屋 | 幽默笑话 | 三湘图库 | 美女写真 | IT知识库 | QQ贴图 | 加入书签

网页制作网络编程图形图象操作系统冲浪宝典软件教学网络安全认证考试通信技术电子商务业内动态书籍教程原码

最近更新 文章分类 多媒体类 精品软件

本站搜索:
您的位置:三湘时空 -> IT知识库 -> 文章分类 -> 邮件服务器 -> 用javamail收取hotmail的退信
用javamail收取hotmail的退信


文章类别:邮件服务器 来源: 作者: 发表日期:2006-12-7 字体:[ ]

小游戏 | 在线影院 | 幽默笑话 | 源码下载 | Flash MTV | 音乐试听 | 书屋 | 美女写真

  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邮箱》。

上一篇:JavaMail 之 杜绝邮件乱码 下一篇:Javamail处理unicode-1-1-utf-7编码的邮件
本栏目热门文章
·巧妙配置Win2003自带mail服务器 2006-12-7
·WINWEBMAIL应用CBL列表 2006-12-7
·Windows Server 2003也能提供邮件服务 2006-12-8
·打造一个小巧的邮件服务器 2006-12-7
·中小企业轻松架设E-mail服务器 2006-12-7
·iPlanet Messaging Server 安装图解 2006-12-7
·用Visual C#实现xx邮件接收程序 2006-12-8
·XMAIL的安装及配置 2006-12-7
·近日研究xmail邮件服务器心得 2006-12-7
·如何利用ASP实现邮箱访问 2006-12-7
新近更新文章
·用WebEasyMail架构邮件服务器 2006-12-8
·利用twig架设WebMail系统 2006-12-8
·如何安装一个hotmail的邮箱系统 2006-12-8
·用Foxmail Server搭建邮件服务器 2006-12-8
·Merak 5.94完全上手 2006-12-8
·WebEasyMail 问题解答大全 2006-12-8
·VisNetic MailServer简易安装指南 2006-12-8
·James安装使用简易指南 2006-12-8
·VisNetic MailServer 常见问题 2006-12-8
·Easymail邮件服务端设置全攻略 2006-12-8
首 页 | 软件发布 | 广告联系 | 下载帮助 | 意见反馈 | 网站地图
  CopyRight? 2002-2004 WWW.SXSKY.NET? All Rights Reserved
三湘时空 站长QQ:82675303 Email: