仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 862|回复: 8
打印 上一主题 下一主题

[学习教程] JAVA教程之用javamail收取hotmail的退信

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:25:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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确实是将语法简化得很好。
透明 该用户已被删除
沙发
发表于 2015-1-21 06:08:03 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
兰色精灵 该用户已被删除
板凳
发表于 2015-1-30 09:20:51 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
活着的死人 该用户已被删除
地板
发表于 2015-2-6 09:30:28 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
金色的骷髅 该用户已被删除
5#
发表于 2015-2-15 22:03:38 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
admin 该用户已被删除
6#
发表于 2015-2-18 22:28:45 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
莫相离 该用户已被删除
7#
发表于 2015-3-6 11:05:31 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-9 17:02:02 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
9#
发表于 2015-3-17 00:09:10 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表