|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。Hotmail是我最经常使用的EmailClient。固然时下hotmail的容量是小了些,速率也经常慢得让人不由问候盖茨的母亲。但不成否定,它功效相称丰厚,也对照不乱。特别它的页面计划更是我等web编程职员的主要参照。
不象良多的POP3服务器,hotmail完成了邮件传送形态关照(multipart/report)。我之前写的邮件客户端只撑持收取multipart/related、multipart/alternative和multipart/mixed等多媒体范例的邮件,其他的由于不罕见,我都疏忽了。
客户不允许了,那另有甚么好说的,另有甚么比让客户中意更主要的事变呢,在没买单之前。
multipart/report邮件范例的先容拜见RFC1892,Sun的中文JavamailFaq里也有相干的申明,我摘录以下:
问.当动静不克不及被传送时,就会前往一个失利动静。我怎样检测这些“回弹”动静?
答:固然有一个Internet尺度用于呈报如许的毛病(multipart/reportMIME范例,参阅RFC1892),但还没有普遍完成它。RFC1211深切会商了这个成绩,包含了大批的例子。
在Internet电子邮件中,特定的邮箱或用户名是不是存在,只能由传送动静的终极服务器决意。动静大概经由过程几其中继服务器(它们不克不及检测毛病),然后再抵达终极服务器。一般,当终极服务器检测到这一毛病,它会前往一个动静给原始动静的发送人,指出失利的缘故原由。有很多Internet尺度会商了这类传送形态关照(DeliveryStatusNotifications),但大批服务器不撑持这些新尺度,相反利用出格手艺来前往这类毛病动静。这使得将“回弹”动静与发生成绩的原始动静互相联系关系起来十分坚苦(注重,这个成绩与JavaMail完整有关)。
有很多手艺和探索法用于处置这一成绩,但它们都不是完善的。一种手艺是VariableEnvelopeReturnPaths,http://cr.yp.to/proto/verp.txt形貌了这一手艺。
我修正了程序,也只是作了些复杂的处置,代码以下:
privatevoidparseMultipart(Multipartmultipart)throwsException{
for(inti=0,n=multipart.getCount();i<n;i++){
BodyPartpart=multipart.getBodyPart(i);
Stringdisposition=part.getDisposition();
if(part.isMimeType("multipart/*")){
this.parseMultipart((Multipart)part.getContent());
}elseif(part.isMimeType("text/html")){
//处置文本内容
}
/*******处置附件,图片等等********/
}elseif(part.isMimeType("message/delivery-status")){
part.setFileName("details.txt");//模仿outlook,details.txt内容即传送形态关照的邮件头信息
saveAttachedFile(part);
}elseif(part.isMimeType("message/rfc822")){
MimeBodyPartmbp=newMimeBodyPart(part.getInputStream());
part.setFileName(mbp.getHeader("Subject",null)+".eml");//模仿outlook,用退件的题目做文件名
saveAttachedFile(part);
}
}
}
假如要做得更友爱,还能够做良多改善,好比依据退信找出已发送文件夹中的原件,大概引发一个关照事务等等。客户其实不必要,我仍是不要自作多情了。
人人都晓得,hotmail不是用pop3协定收信,而是用webdav协定。用java收发hotmail的邮件,拜见《经由过程JavaMail会见Hotmail邮箱》
在ruby里才是一切皆对象。当然我不并不是很了解ruby,但是ruby确实是将语法简化得很好。 |
|