目标:实现一个基于Web的可以发送附件的邮件程序。(涉及的知识点:文件上传+邮件发送)
知识点引入:
文件上传:开发的Web应用是基于HTTP协议的,工作在Request/Response模式下。在这种模式下,用户通过浏览器访问Web应用中的内容,都会先通过浏览器给服务器发送一个对资源的请求,服务器接到这个请求后,会把用户所请求的资源返回给浏览器。接下来的一点很少有人会思考到:其实文件上传与浏览器发送请求性质相同,都是向服务器传递信息。一般情况下,浏览器给服务器发送的请求信息都是一些简单的文本信息,而服务器返回给用户的信息是比较复杂的信息,会包括头信息,文本信息,图片文件的内容等。而通过浏览器上传文件给服务器,与正常的访问不同,用户通过浏览器给服务器发送的是比较复杂的信息,而浏览器返回的可能是简单的信息。(这段话没有什么实际的价值,但是本人觉得挺有意思的,可以将文件上传与发送请求联系在一起。)
JavaMail:在javaweb应用中,我们非常需要电子邮件的功能。sun公司已经为我们准备好了JavaMail技术,专门帮助处理邮件相关。使用JavaMail技术需要在本机安装邮件服务器,本篇博客使用的是Apache Commons Email组件编写,所以对JavaMail不做介绍。
关于邮件发送,我们对相关的协议做基本的了解:
- SMTP( Simple Mail Transfer Protocol ):电子邮件发送协议。当我们使用客户端程序发送邮件时,客户端程序先把邮件发送给我们设置SMTP服务器,然后SMTP服务器再根据收件人的地址,把邮件中转给接受方的SMTP服务器,以便让邮件收件人最终使用POP3或者IMAP方式收取邮件。JavaMail API不包含SMIP的服务程序,所以使用JavaMail技术发送邮件,需要其他SMTP服务器的支持。
- POP3协议(Post Office Protocol V3):是一种收取邮件的协议,通过这个协议,可以让邮件客户端程序把存在POP3服务器上的邮件接收到本机上进行处理。
- IMAP协议(Internet Message Access Protocol):IMAP是更加高级的用于接收邮件的协议。
- MIME协议(Multipurpose Internet Mail Extensions):它不是邮件传输协议,但对传输内容的文本、附件及其他内容定义了格式。
程序开工:
准备工作:此次程序用到的jar文件上传:https://download