操作javamail收取Hotmail的退信[Java编程]
本文“操作javamail收取Hotmail的退信[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
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收取Hotmail的退信[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |