时间: 2021-07-31 作者:daque
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邮箱》。