JAVA教程之用javamail收取hotmail的退信
再说说缺点:首先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确实是将语法简化得很好。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 是一种将安全性(Security)列为第一优先考虑的语言 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
页:
[1]