网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.学做网页Applet录音机.
.JavaBean与Enterprise JavaBean有.
.ConnectionManager适应多数据库环.
.建模的误区.
.对象的接口.
.利用UML序列图设计Java应用程序详.
.加密与解密原理的一个例子.
.JSR-184中纹理对象介绍.
.Java路径问题最终解决方案之一.
.在 Java 中如何进行 BASE64 编码.
.Java的字串运算符+.
.Java 理论与实践: 平衡测试,第 .
.JAVA基础: 响应鼠标点击事件的小.
.多种Java框架并存并非坏事.
.Jetspeed的中文化.
.如何使用kxml解析WAP.
.Type 属性.
.用JDBC连接数据库(1).
.Java 实践: 用 XQuery 进行屏幕搜.
.JBuilder4入门(下).

利用javamail收取Hotmail的退信

发表日期:2008-1-5



  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")) {

上一篇:一个理解wait()与notify()的例子 人气:1179
下一篇:X3D实战基础讲座之八 人气:542
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐