首页后端开发其他后端知识javamail收取Hotmail的退信

javamail收取Hotmail的退信

时间2024-02-07 23:23:02发布访客分类其他后端知识浏览905
导读:收集整理的这篇文章主要介绍了javamail收取Hotmail的退信,觉得挺不错的,现在分享给大家,也给大家做个参考。 Hotmail 是我最常用的Email Client。虽然时下ho...
收集整理的这篇文章主要介绍了javamail收取Hotmail的退信,觉得挺不错的,现在分享给大家,也给大家做个参考。 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邮箱》。 您可能感兴趣的文章:
  • Java基于JavaMail实现向QQ邮箱发送邮件
  • 如何使用JavaMail发送邮件
  • JavaWeb中JavaMail创建邮件和发送邮件
  • Java程序中使用JavaMail发送带图片和附件的邮件
  • 详解Java编程中JavaMail API的使用
  • 基于JavaMail API收发邮件的方法
  • JavaMail实现发送超文本(html)格式邮件的方法
  • JavaMail实现邮件发送的方法
  • java中javamail发送带附件的邮件实现方法
  • struts2集成javamail发邮件示例详解
  • 基于JavaMail的常用类详细介绍
  • javamail 发送邮件的实例代码分享
  • JavaMail访问Hotmail邮箱
  • JSP中使用JavaMail
  • Java中使用JavaMail多发邮件及邮件的验证和附件实现

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: javamail收取Hotmail的退信
本文地址: https://pptw.com/jishu/604695.html
EJB3.0之实体Bean的继承 初探Java类加载机制

游客 回复需填写必要信息