JavaMail访问Hotmail邮箱

2016-01-29 13:00 12 1 收藏

JavaMail访问Hotmail邮箱,JavaMail访问Hotmail邮箱

【 tulaoshi.com - Java 】

  相信许多人都有MSN聊天工具的帐号,例如abc@hotmail.com ,这个账号其实也是一个邮件地址,可以进行正常的邮件收发功能,你可以通过网址 http://www.hotmail.com 来访问和操作这个邮箱进行邮件的收发。但是这个邮箱有一个限制就是它并不提供POP3或者SMTP服务,也就是说一般的邮件客户端工具无法使用这个邮箱,虽然现在有不少的邮件工具可以支持Hotmail邮箱,但是如果我们需要在我们的Java项目中增加对Hotmail邮箱的支持,那往往会不知从什么地方开始入手,因为SUN公司提供的JavaMail 本身并不提供对除了POP3/IMAP以及SMTP外其他协议的支持。

  但事实上,JavaMail只是定义了一组平台无关、独立于通讯协议的邮件程序框架,或者说是接口,它是作为Java的可选包存在的。因此可以这样说:JavaMail并不关心所使用的协议,不管是POP3、SMTP、IMAP当然还有Hotmail用的HTTP协议。对于JavaMail的客户端而言也是这样的,下图就是一个最简单的JavaMail结构图,通过Transport进行邮件的发送,通过Store实现对邮件的收取,而不同协议的实现,JavaMail里的概念叫做Provider,只需要根据JavaMail定义的接口实现自己的Provider即可。


  为了实现通过JavaMail访问Hotmail邮箱,我们就需要架起JavaMail接口与Hotmail服务所提供的访问接口之间的桥梁。在这之前我们必须首先了解Hotmail所使用的接口协议。

  Hotmail通过地址 http://services.msn.com/svcs/hotmail/httpmail.asp 提供基于HTTP协议的服务,它不同于我们通过浏览器访问 http://www.hotmail.com 的这个地址,后面这个地址是提供给用户一个基于浏览器的访问界面以便对邮箱进行操作,你当然可以通过编写HTTP客户端程序来解析页面并获取邮件的信息,但是这样做不仅实现的复杂程度非常高,而且每次页面风格发生变化后程序都要做相应的调整,因此不具备通用性,显然是不可行的。而地址 http://services.msn.com/svcs/hotmail/httpmail.asp 则不同,它提供了固定的应用程序接口。当你使用浏览器访问该地址的时候,会弹出下面要求登录的窗体:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/java/)

  而当输入正确的用户名和口令后会再弹出一次或两次该提示窗口,但提示信息不同,操作完成后出现页面无法显示的错误,错误码是 405 (资源不允许)。因此该服务并不允许通过浏览器来访问。

  事实上Hotmail使用的是WebDAV来提供基于HTTP协议的应用编程接口,WebDAV(Web 分布式创作和版本控制)已经成为重要的 Web 通讯协议。WebDAV所要解决的问题是:

  1.改写保护:HTTP 1.1 无法确保客户端可以保护资源,并且可以在其他客户端同时编辑它们的情况下进行更改。 使用 WebDAV,可以通过多种方式来锁定资源,以便让其他客户端知道您对所讨论的资源感兴趣,或者防止其他客户端访问该资源。

  2.资源管理:HTTP 只能直接访问单个资源。 WebDAV 提供一种更有效地组织数据的方法。 WebDAV 引入了可包含资源 的集合(类似于文件系统文件夹)概念。 通过 WebDAV 进行的资源管理包括如下功能:创建、移动、复制和删除集合,以及集合中的资源或文件。

  3.文档属性:不同类型的数据具有唯一的属性,这有助于描述数据。 例如,在电子邮件中,这些属性可能是发件人的姓名和接收邮件的时间。 在协作文档中,这些属性可能是文档原始作者的姓名和最后一个编辑者的姓名。 因为人们使用的文档类型各不相同,所以可能的属性类型列表也变得无限大。 XML 是 WebDAV 所需的一种可扩展通讯工具。

  关于WebDAV的更多资料可以参阅本文最后的参考资料。

  相对于自行解析Hotmail的浏览器页面而言,基于特定协议WebDAV的接口使Hotmail邮件客户端程序的实现更加稳定和可靠。在了解了JavaMail API的基本接口以及Hotmail所提供接口的协议,本文的题目就变得非常具体了,就是如果编写基于WebDAV的JavaMail Provider(JavaMail提供者)并使用这个提供者来实现Hotmail邮件收发功能,但这题目太大而且已经超过了一篇文章所能叙述的范围,因此我们接下来将引入一个开放源码项目JDAVMail,并详细介绍如何通过这个项目实现Hotmail邮件的收发功能。

  JDAVMail 是一个开放源码的JavaMail的提供者项目,可以通过它来访问基于WebDAV协议的邮件服务,有如Hotmail邮箱。你可以到 http://sourceforge.net/projects/jdavmail 这个网址下载到最新版本的程序。JDAVMail使用了Jakarta上的commons httpclient 作为HTTP客户端组件与服务器进行通讯,同时使用了jdom进行XML数据的解析,另外由于httpclient项目用到了commons logging进行日记的输出,因此commons-logging也是必须的,这三个组件都可以在JDAVMail的压缩包中的lib目录中找到,压

来源:https://www.tulaoshi.com/n/20160129/1488484.html

延伸阅读
Foxmail如何接收Hotmail邮件   接收Hotmail邮件,可以在Foxmail中新建一个Hotmail帐户,或者在现有帐户下建立一个Hotmail连接。 一、建立一个Hotmail邮箱帐户。 1. 用Foxmail菜单的帐户|新建打开新进帐户向导。 2. 在新建向导的第3步填写一个Hotmail邮件地址(如:aero2002@hotmail.com)。 3. 点击下一步按钮...
标签: 电脑入门
今天(04.22)与一位编辑朋友交换电子名片的时候,突然发现,消息无法正常发送,并有提示:“警告:此消息中包含的网址被大量QQ用户举报或存在较高安全风险,已经被QQ安全中心阻止。对方无法收到您本次发送的消息。”(如图01所示) 图01:发送QQ信息时遇到“警告” 含有高风险的网址?!笔者仔细看了看名片的内容,没有什么网址...
标签: Java JAVA基础
  第二部分:关于JavaMail 文档的使用 下载的JavaMail API中带的文档是很有用的。你可以在JavaMail下的/docs/javadocs/index.html找到它。第二部分主要将分析邮件程序的组件。你可以通过阅读文档来获得更多这方面的信息。 组件发送邮件需要使用JavaMail,它使对邮件的操作变得简单易用。 属性对象 JavaMail需要创建一...
标签: Java JAVA基础
<%@ page import=" javax.mail.*, javax.mail.internet.*, javax.activation.*,java.util.*" % <html <head <TITLEJSP meets JavaMail, what a sweet combo.</TITLE </HEAD <BODY <% try{ Properties props = new Properties(); Session sendMailSession; Store store; Transport transport; sendMailSession = Se...
标签: Java JAVA基础
<HTML <BODY <FORM action="sendmail.jsp" method="post" <TABLE align="center" <TR <TD width="50%" To:<BR<INPUT name="to" size="25" </TD <TD width="50%" From:<BR<INPUT name="from" size="25" </TD </TR <TR <TD colspan="2" Subject:<BR<INPUT name="subject" size="50" </T...

经验教程

504

收藏

97

精华推荐

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部