




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目前的电子邮件基本上都是通过POP3网络协议接收的。根据POP3的规定,当一个电子邮件程序需要接收电子邮件时,该程序同POP3服务程序需要建立起双向的传输通道。和SMTP类似,当传输通道成功建立后,电子邮件程序会向POP3服务程序发送一系列基于ASCII字符的命令,而POP3服务程序会对这些命令产生相应的回应来表明相应的操作是成功还是失败了。下图显示了POP3是如何工作的。POP3协议中定义了很多命令,其中最常用的是USER,PASS,STAT,RETR,DELE和QUIT。和前面一样。当一个邮件程序成功地通过套接字连接到POP3服务器后,POP3服务器程序将向邮件程序发送初始化消息。该消息由
2、一个"+OK"回应码和POP3服务程序的名称和版本信息构成。POP3中只有两种回应码"+OK"和"-ERR",邮件程序只需要根据回应码做出相应的反应,而回应码后的文字信息主要是供人查看的。在收到初始化消息后,邮件程序通过发送USER命令开始邮件传输过程。USER命令指定了用户名(邮箱的名称),作为回应,POP3服务程序需要确认用户名对应的邮箱。如果成功,邮件程序需要发送PASS命令来向POP3服务程序提供邮箱的密码。接着需要发送STAT命令来获得目前在邮箱中电子邮件的数量和每个邮件的大小;或者发送RETR命令提取邮件;也可以发送DEL
3、E删除邮件。最后使用QUIT命令退出邮件传输过程。下面提供了一个基于命令行的例子POP3Demo,这个例子可以帮助你理解基于POP3的邮件传输机制。这个程序将利用标准端口110连接到一个POP3服务程序上。为了使程序能够运行,你需要将home更改为你使用的邮箱的地址。/POP3Demo.javaimportjava.io.*;.*;classPOP3Demopublicstaticvoidmain(Stringargs)StringPOP3Server=""intPOP3Port=110;Socketclient=null;try/创建一个连接到POP3服务程序的套接字。c
4、lient=newSocket(POP3Server,POP3Port);/创建一个BufferedReader对象来读取用户输入。BufferedReaderstdin;stdin=newBufferedReader(newInputStreamReader(System.in);/创建一个BufferedReader对象,以便从套接字读取输出。InputStreamis=client.getInputStream();BufferedReadersockin;sockin=newBufferedReader(newInputStreamReader(is);/创建一个PrintWriter
5、对象,以便向套接字写入内容。OutputStreamos=client.getOutputStream();PrintWritersockout;sockout=newPrintWriter(os,true);/trueforauto-flush/显示POP3握手信息。System.out.println("S:"+sockin.readLine();while(true)System.out.print("C:");/读取用户输入。Stringcmd=stdin.readLine();/将命令发送到POP3服务程序。sockout.println(cm
6、d);/读取POP3服务程序的回应消息。Stringreply=sockin.readLine();System.out.println("S:"+reply);/如果输入了RETR命令并且返回了成功的回应码,持续从套接字读取输出,/直到遇到<CRLF>.<CRLF>。这时从套接字读出的输出就是邮件的内容。if(cmd.toLowerCase().startsWith("retr")&&reply.charAt(0)= + )doreply=sockin.readLine();System.out.println(
7、"S:"+reply);if(reply!=null&&reply.length()>0)if(reply.charAt(0)= . )break;while(true);/如果用户输入了QUIT命令,退出邮件传输过程。if(cmd.toLowerCase().startsWith("quit")break;catch(IOExceptione)System.out.println(e.toString();finallytryif(client!=null)client.close();catch(IOExceptione)下面是
8、运行POP3Demo的结果:S:+OKMicrosoftExchange2000POP3serverversion6.04417.0()readyC:userfrS:+OKC;passfrS:+OKUsersuccessfullyloggedon.运行POP3Demo后,邮件服务程序首先返回初始化信息。我们可以看到邮件服务器上安装的是微软的Exchange2000作为邮件服务程序。然后输入USER和PASS命令指定用户名和密码。有些邮件服务程序在登录后会提示用户当前邮箱中是否有新的邮件,例如在Linux下的QPOP会返回类似于这样的信息:S:+OKfrhas1message(554octets
9、).。C:statS:+OK11通过STAT命令可以查看当前邮箱中邮件的数目,POP3服务程序返回了11,表示有一份邮件,一封邮件未读。C:retr1S:+OKS:Recevied:fromgis02(3)withMicrosoftSMTSVC(5.0.2195.2966)S:Fri,13Dec200215:12:37+0800S:Message-ID001401c2a77$04353900$35fw0217S:From:"=?gb2312?B?t+vuow=?="frS:To:frSubject:TestEmailThisisthetestEmail.然
10、后就可以发送RETR命令来接收邮件了。RETR的参数代表了邮件的编号,1代表最新的邮件。这封邮件就是刚才通过SMTPDemo发送的邮件。有一点需要注意,在发送的时候我并没有指定From:头,那么From:头是从哪里来的呢?当发送邮件的时候,如果SMTP服务程序如果没有检测到From:头,会将MAIL命令后的参数作为From:头的内容。C:dele1S:+OKC:statS:+OK00使用DELE命令可以删除指定的邮件,这里我删除了序号为1的邮件。删除后,在利用STAT命令查看邮件时,就会返回00,表示现在邮箱里没有邮件。C:quitS:+OKMicrosoftExchange2000POP3serverver
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 游戏本地化翻译平台创新创业项目商业计划书
- 农场动物健康大数据分析创新创业项目商业计划书
- 机器翻译引擎训练服务创新创业项目商业计划书
- 退休人士兴趣小组创新创业项目商业计划书
- 蓝牙音频高清传输技术创新创业项目商业计划书
- 2025年生鲜新零售行业冷链物流配送时效性与成本优化分析报告
- 2025年海洋生态系统服务功能评估在生态修复中的应用研究
- 2025年绿色建筑推广关键指标:绿色建筑与建筑废弃物资源化利用与处理研究报告
- 2025年绿色供应链管理在制造业应用案例深度分析报告001
- 2025年水性涂料生产项目环保型产品绿色营销策略研究报告
- 租房托管班合同(标准版)
- 2025年甘南事业单位笔试试题(含答案)
- 2025年浪浪山小妖怪开学第一课
- 2025年安顺西秀区招聘城市社区工作者考试笔试试题(含答案)
- 2025-2026秋“1530”安全教育记录表
- 催乳相关培训知识课件
- 2025汽车智能驾驶技术及产业发展白皮书
- 2025年幼儿园食堂从业人员培训测试题(含答案)
- 2025年公平竞争审查知识竞赛考试练习题库(正式版)含答案
- 全力以赴战高考乘风破浪正当时(课件)-2025-2026学年高三上学期开学第一课主题班会
- 登革热与基孔肯雅热防控指南
评论
0/150
提交评论