来看使用javamail收取Hotmail的退信
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net网页编程也不过3,4本书足以,这就是区别。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邮箱》。
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net网页编程和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 是一种使用者不需花费很多时间学习的语言 是一种突破用户端机器环境和CPU 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
页:
[1]