JavaMail(一)
浅谈邮件传输协议
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把Email寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
简单邮件传输协议(SMTP)是一种基于文本的电子邮件传输协议,是在因特网中用于在邮件服务器之间交换邮件的协议。SMTP是应用层的服务,可以适应于各种网络系统。
SMTP的命令和响应都是基于文本,以命令行为单位,换行符为CR/LF。响应信息一般只有一行,由一个3位数的代码开始,后面可附上很简短的文字说明。
SMTP要经过建立连接、传送邮件和释放连接3个阶段。具体为:
(1)建立TCP连接。
(2)客户端向服务器发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令。
(3)服务器端以OK作为响应,表示准备接收。
(4)客户端发送RCPT命令。
(5)服务器端表示是否愿意为收件人接收邮件。
(6)协商结束,发送邮件,用命令DATA发送输入内容。
(7)结束此次发送,用QUIT命令退出。
客户端邮件首先到达数据发送服务器,再由发送服务器负责发送到接收方的服务器。在发送邮件前,发送服务器会与接收方服务器联系,已确认接收方服务器是否已准备好接受邮件。如果已经准备好,则传送邮件;如果没有准备好,发送服务器便会等待,并在一段时间后继续与接收方服务器进行联系,若在规定的时间内联系不上,发送服务器会发送一个消息到客户的邮箱说明情况。
SMTP服务器基于DNS中的邮件交换(MX)记录路由电子邮件。电子邮件系统发邮件时是根据收信人的地址后缀来定位邮件服务器的。SMTP通过用户代理程序(UA)完成邮件的编辑、收取和阅读等功能;通过邮件传输代理程序(MTA)将邮件传送到目的地。
POP(Post Office Protocol)即邮局协议,POP协议允许工作站动态访问服务器上的邮件,目前已发展到第三版,称为 POP3。
POP协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,用户通过自己所熟悉的邮件客户端软件,例如Foxmail、Outlook Express和the Bat等,经过相应的参数设置(主要是设置POP3邮件服务器的IP地址或者域名、用户名和口令)后,可以连接到邮件服务器并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人机器上,邮件服务器上的邮件被删除。
POP3 并不支持对服务器上邮件进行扩展操作,此过程由更高级的IMAP4完成。POP3使用TCP作为传输协议。
IMAP(Internet Message Access Protocol)即Internet消息访问协议,运行在TCP/IP协议之上,使用的端口是143,是一种功能比POP3更强大的新的接收邮件协议。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。常用的版本是IMAP4。
邮件客户程序的主要任务是向邮件服务器发送邮件,以及接收来自邮件服务器的邮件。如果用java语言从头编写邮件客户程序,就必须通过java套接字(socket)与邮件服务器通信,发送和接收符合IMAP、POP3或SMTP协议的请求和响应信息。
如果使用命令行发邮件的话,用户名和密码是需要Base64编码的,下面的类提供了对用户名和密码编码的功能:
