`
univasity
  • 浏览: 811486 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

电子邮件收发原理和实现(POP3, SMTP) [整理]

阅读更多

<!-- 最近工作上接触到了邮箱的开发,整理一下学到的东西,以备忘 -->

 

电子邮件的收发流程示意图:

 


相对于邮件客户端的流程就是:

 


邮件接收——POP3协议
POP3(Post Office Protocol 3,邮局协议版本3)主要用于支持使用客户端远程管理在服务器上的电子邮件。该协议是在RFC-1939中定义的,是Internet上的大多数人用来接收邮件的机制。POP3采用Client/Server工作模式,默认使用TCP 110端口。
* 在使用POP协议时,人们熟悉的很多功能,如查看收到了多少新邮件消息的功能,POP根本不支持。这些功能都内置到诸如Eudora或 Microsoft Outlook之类的邮件程序中,能为您记住接收的上一封邮件,以及计算有多少新邮件这类信息。因此,如果想获取这类信息,将需要由自己进行计算。
[详细请参考wiki的解析:http://zh.wikipedia.org/wiki/POP3 ]

 

<POP3状态图>

 

<POP3常用命令表>

* 对大小写不敏感,以CRLF作为结束
[详细可参考RFC1939协议,http://www.rfc-ref.org/RFC-TEXTS/1939/contents.html ]

>> 命令可能的返回值
+ OK <描述>  成功
- ERR <描述> 失败

<POP3工作原理>
1)        客户端使用TCP协议连接邮件服务器的110端口;
2)        客户端使用USER命令将邮箱的账号传给POP3服务器;
3)        客户端使用PASS命令将邮箱的账号传给POP3服务器;
4)        完成用户认证后,客户端使用STAT命令请求服务器返回邮箱的统计资料;
5)        客户端使用LIST命令列出服务器里邮件数量;
6)        客户端使用RETR命令接收邮件,接收一封后便使用DELE命令将邮件服务器中的邮件置为删除状态;
7)        客户端发送QUIT命令,邮件服务器将将置为删除标志的邮件删除,连接结束。
(注:客户端UA可以设定将邮件在邮件服务器上保留备份,而不将其删除。)

一个基本实现(Java):
Pop3Test.java (见附件)

 


邮件发送——SMTP协议
SMTP(Simple Message Transfer Protocol,简单邮件传输协议)是用于传送电子邮件的机制。该协议是在RFC-821中定义的。采用Client/Server工作模式,默认使用TCP 25端口。
[详细请参考wiki的解析:http://zh.wikipedia.org/wiki/SMTP ]

<SMTP状态图>

 
<SMTP常用命令表>

* 对大小写不敏感,以CRLF作为结束
[详细可参考RFC821协议,中文版链接地址:http://www.5dmail.net/rfc/RFC821.txt ]

>> 命令可能的返回值
500 格式错误,命令不可识别(此错误也包括命令行过长)
501 参数格式错误
502 命令不可实现
503 错误的命令序列
504 命令参数不可实现
211 系统状态或系统帮助响应
214 帮助信息
220 <domain> 服务就绪
221 <domain> 服务关闭传输信道
421 <domain> 服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应)
250 要求的邮件操作完成
251 用户非本地,将转发向<forward-path>
450 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)
550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)
451 放弃要求的操作;处理过程中出错
551 用户非本地,请尝试<forward-path>
452 系统存储不足,要求的操作未执行
552 过量的存储分配,要求的操作未执行
553 邮箱名不可用,要求的操作未执行(例如邮箱格式错误)
354 开始邮件输入,以<CRLF>.<CRLF>结束
554 操作失败


<SMTP工作原理>
1)        客户端使用TCP协议连接SMTP服务器的25端口;
2)        客户端发送HELO报文将自己的域地址告诉给SMTP服务器;
3)        SMTP服务器接受连接请求,向客户端发送请求账号密码的报文(AUTH LOGIN);
4)        客户端向SMTP服务器传送账号和密码,如果验证成功,向客户端发送一个OK命令,表示可以开始报文传输;
5)        客户端使用MAIL命令将邮件发送者的名称发送给SMTP服务器;
6)        SMTP服务器发送OK命令做出响应;
7)        客户端使用RCPT命令发送邮件接收者地址,如果SMTP服务器能识别这个地址,就向客户端发送OK命令,否则拒绝这个请求;
8)        收到SMTP服务器的OK命令后,客户端使用DATA命令发送邮件的数据。
9)        客户端发送QUIT命令终止连接。

一个基本实现(Java):
SmtpTest.java (见附件)

*Base64加密使用了Apache的开源包,使用时需导入附件中的commons-codec-1.5.jar包。

 

--------------------------------------------------------------------------------------------------
一些参考资料:
电子邮件检索与传输流程
Email电子邮件应用分析
用Java来编写可根据SMTP和POP3协议来收发E-mail的Java Applet

 

--------------------------------------------------------------------------------------------------

 

  • 大小: 7.7 KB
  • 大小: 27.8 KB
  • 大小: 13.8 KB
  • 大小: 24.3 KB
  • 大小: 26.9 KB
  • 大小: 27.7 KB
  • 大小: 20.3 KB
分享到:
评论

相关推荐

    计算机网络邮件收发 SMTP和POP3实现

    SMTP(Simple Mail Transfer Protocol)是互联网上传输电子邮件的标准协议,它定义了邮件服务器之间如何交互,使得用户能够将邮件从一个服务器发送到另一个服务器。SMTP使用TCP/IP协议栈,通常通过端口25进行通信。...

    VC,完整的电子邮件客户端例子,收发邮件例子,用到POP3和SMTP

    在IT领域,电子邮件系统是日常通信的重要组成部分,而POP3(Post Office Protocol version 3)和SMTP(Simple Mail Transfer Protocol)则是实现电子邮件收发的核心协议。这个VC(Visual C++)源码示例提供了一个...

    用VC做邮件收发SMTP、POP3程序

    本主题聚焦于使用VC++实现电子邮件的发送和接收,主要涉及到SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)这两种网络协议。 SMTP是互联网上用于发送电子邮件的标准协议,它定义...

    email电子邮件收发程序,含有对POP3,SMTP的简单实现.zip

    电子邮件是互联网上最常用的信息交流方式之一,而POP3(Post Office Protocol version 3)和SMTP(Simple Mail Transfer Protocol)是实现电子邮件收发的核心协议。本压缩包中的内容是一个简单的邮件收发程序,包含...

    用Telnet命令收发邮件(SMTP和POP3协议)实验报告.docx

    这些命令的使用,可以帮助我们更好地理解电子邮件的工作原理和协议。 知识点总结 * SMTP协议:定义了邮件客户端软件与SMTP服务器之间,以及两台SMTP服务器间的通信规则。 * POP3协议:定义了邮件客户端程序与POP3...

    邮箱实现原理。POP3,SMTP

    电子邮件是互联网上最基础的通信方式之一,而其背后的工作机制主要依赖于SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)等协议。这些协议规定了邮件的发送、接收和存储方式。 **...

    vc++ 邮件收发程序 smtp pop3

    首先感谢mc,是他的程序给了我灵感,和初学的帮助。 mc的程序,不能发送邮件,在此我修改了错误,可以正常的发送邮件。 界面也从新整合个人认为更符合操作习惯 并增加了接受功能,只是该部分还没有完全实现...

    基于SMTP协议和POP3协议的邮件收发客户端.7z.zip

    实验报告请私聊-升级版见其它资源 关于要求:编程实现通过用户界面,用户登录信箱认证过程(含base64方式...这意味着除了使用SMTP协议发送邮件外,还需设计使用POP3协议接收邮件,在接收的时候采用黑白名单过滤的功能。

    邮件收发系统 SMTP POP3

    邮件收发系统是互联网通信的重要组成部分,SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)是两种核心的电子邮件协议,用于实现邮件的发送和接收。本项目仿照知名的邮件客户端软件...

    c++编写的smtp和pop3服务器实现

    SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)是互联网上用于电子邮件传输的两个核心协议。在本文中,我们将深入探讨这两个协议的原理及其在C++编程中的实现。 首先,SMTP是用于...

    一个完整的SMTP/POP3邮件发送和接收的VC++的软件代码

    SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)是互联网上用于电子邮件传输的两种主要协议。在给定的标题和描述中,我们关注的是如何使用VC++编程语言来实现这两个协议,以便于...

    pop3和SMTP协议邮件服务器

    POP3(Post Office Protocol version 3)和SMTP(Simple Mail Transfer Protocol)是互联网上用于电子邮件收发的两个关键协议。POP3主要用于从邮件服务器接收邮件,而SMTP则用于发送邮件。在本文中,我们将深入探讨...

    10172911梁天一用Telnet命令收发邮件(SMTP和POP3协议)实验报告.docx

    ### Telnet命令与SMTP及POP3协议实验报告 ...通过本次实验,我们不仅掌握了如何使用Telnet命令进行邮件的发送与接收,还深入了解了SMTP与POP3协议的工作机制,为进一步学习电子邮件系统的底层实现打下了坚实的基础。

    SMTP、POP3收发邮件

    SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)是互联网上用于电子邮件收发的两个主要协议。SMTP主要用于将邮件从一个服务器发送到另一个服务器,而POP3则用于从邮件服务器下载...

    Python使用POP3和SMTP协议收发邮件的示例代码

    ### Python使用POP3和SMTP协议收发邮件的示例代码详解 #### 一、概述 在互联网技术领域中,电子邮件仍然是一个重要的通信工具。对于软件开发者来说,掌握如何使用编程语言来实现邮件的发送和接收是一项实用技能。...

    基于POP3与SMTP协议的邮件收发程序的开发.pdf

    电子邮件是现代通信中不可或缺的一部分,基于POP3与SMTP协议的邮件收发程序是实现这一功能的基础。POP3和SMTP协议是互联网电子邮件系统的核心,它们确保了邮件能够在不同的邮件服务器之间可靠地传输。 SMTP(Simple...

    smtp pop3邮件收发系统

    SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol version 3)是电子邮件系统中的两个核心协议,它们分别处理电子邮件的发送和接收。 首先,让我们深入理解SMTP。SMTP是一种基于文本的协议,...

    POP3和SMTP查询器0分

    例如,"pop3smtp"这个压缩包文件可能包含了各种邮件服务提供商的POP3和SMTP服务器设置,便于用户参考。 在设置邮件客户端时,用户需要输入正确的POP3和SMTP服务器地址,同时还需要提供用户名(通常为完整电子邮件...

Global site tag (gtag.js) - Google Analytics