用java开发Email工具之接收邮件
(2016-12-14 04:14:07)
标签:
杂谈
目前的电子邮件基本上都是通过POP3网络协议接收的。根据POP3的规定,当一个电子邮件程序需要接收电子邮件时,该程序同POP3服务程序需要建立起双向的传输通道。和SMTP类似,当传输通道成功建立后,电子邮件程序会向POP3服务程序发送一系列基于ASCII字符的命令,而POP3服务程序会对这些命令产生相应的回应来表明相应的操作是成功还是失败了。下图显示了POP3是如何工作的。
POP3协议中定义了很多命令,其中最常用的是USER,PASS,STAT,RETR,DELE和QUIT。和前面一样。当一个邮件程序成功地通过套接字连接到POP3服务器后,POP3服务器程序将向邮件程序发送初始化消息。该消息由一个"
OK"回应码和POP3服务程序的名称和版本信息构成。POP3中只有两种回应码"
OK"和"-ERR",邮件程序只需要根据回应码做出相应的反应,而回应码后的文字信息主要是供人查看的。在收到初始化消息后,邮件程序通过发送USER命令开始邮件传输过程。USER命令指定了用户名(邮箱的名称),作为回应,POP3服务程序需要确认用户名对应的邮箱。如果成功,邮件程序需要发送PASS命令来向POP3服务程序提供邮箱的密码。接着需要发送STAT命令来获得目前在邮箱中电子邮件的数量和每个邮件的大小;或者发送RETR命令提取邮件;也可以发送DELE删除邮件。最后使用QUIT命令退出邮件传输过程。
下面提
java视频教程
http://www.kgc.cn/java/list-1-6-9-9-0.shtml
供了一个基于命令行的例子POP3Demo,这个例子可以帮助你理解基于POP3的邮件传输机制。这个程序将利用标准端口110连接到一个POP3服务程序上。为了使程序能够运行,你需要将home更改为你使用的邮箱的地址。
下面是运行POP3Demo的结果:
运行POP3Demo后,邮件服务程序首先返回初始化信息。我们可以看到邮件服务器上安装的是微软的Exchange
2000作为邮件服务程序。然后输入USER和PASS命令指定用户名和密码。有些邮件服务程序在登录后会提示用户当前邮箱中是否有新的邮件,例如在Linux下的QPOP会返回类似于这样的信息:
然后就可以发送RETR命令来接收邮件了。RETR的参数代表了邮件的编号,1代表最新的邮件。这封邮件就是刚才通过SMTPDemo发送的邮件。有一点需要注意,在发送的时候我并没有指定From:头,那么From:头是从哪里来的呢?当发送邮件的时候,如果SMTP服务程序如果没有检测到From:头,会将MAIL命令后的参数作为From:头的内容。
使用DELE命令可以删除指定的邮件,这里我删除了序号为1的邮件。删除后,在利用STAT命令查看邮件时,就会返回0
0,表示现在邮箱里没有邮件。
最后使用QUIT命令中断与POP3服务程序的通讯。
小结
Java的网络API可以用来编写很多有用的程序,例如收发电子邮件的程序。在这篇文章中,我们了解了电子邮件的结构以及如何使用SMTP和POP3协议来发送和接收邮件,同时也了解了MIME是如何支持附件的。
(责任编辑 Sunny)
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。