如何用传统的方式发邮件
参考资料: https://www.bilibili.com/video/BV1c4411d7jb?p=72&vd_source=e66dd25b0246f28e772d75f11c80f03c 湖科大的高军老师做的计算机网络课,去年选修的计网全靠高老师,生动,举例丰富,配套实验课,无废话纯干货,单推一波!
电子邮件介绍
电子邮件(E-mail)是一种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费)、非常快速的方式(几秒钟之内可以发送到世界上任何指定的目的地),与世界上任何一个角落的网络用户联系。 电子邮件可以是文字、图像、声音等多种形式。同时,用户可以得到大量免费的新闻、专题邮件,并轻松实现轻松的信息搜索。电子邮件的存在极大地方便了人与人之间的沟通与交流,促进了社会的发展。
电子邮件系统
电子邮件系统采用客户/服务器方式。
电子邮件系统的三个主要组成构件:用户代理、邮件服务器和电子邮件所需的协议。
用户代理(LDA):用户与电子邮件系统的接口,又称为电子邮件客户端软件。 现在的很多邮件客户端都可以设置邮件代理这一选项,比如hotmail、网易邮箱大师等。
邮件服务器:电子邮件系统的基础设施。Internet上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。
如图所示,是电子邮件的发送流程:
- 发送方通过用户代理,使用SMTP发送邮件,这一过程遵循TCP协议;
- 邮件先到达发送方的邮件服务器,服务器中登陆SMTP客户,使用SMTP发送邮件。这一过程同样使用的是TCP协议;
- 接收方通过SMTP服务器接收邮件,随后转送至POP3服务器,使用POP3读取邮件。接收方(同样也是POP3客户)通过用户代理最终接收邮件。
简单邮件传送协议(SMTP)的工作原理
发送方和接收方都使用TCP协议进行连接,这一点在刚刚已经阐明了。注意端口号为25。
发送方邮件服务器就像一个邮筒。用户把待发送的邮件放进这个“邮筒”里,服务器周期性地扫描邮件缓存,如果发现有待转发的邮件,那么服务器便会“捡起”这一封邮件,通过TCP发送给接收方的服务器。
整个工作流程概述起来比较简单。我们来看具体的TCP握手流程:
发送方和接收方使用命令和应答的模式握手。其中,命令有14条,应答信息有21种。
-
首先,接收方会主动推送一条应答220,告知其他服务器自己服务就绪。
-
客户端向服务器说明身份,告知自己SMTP服务器的域名。
HELO url
// 这里的URL即发送方SMTP邮件服务器的域名。
- 之后若身份有效,应答250。否则发回其他代码,如421,表示服务不可用。
- 客户端告诉服务器邮件来自何方:
MAIL FROM:url
//这里的URL即用户自己的邮箱域名。
- 接收方服务器若认为合理,则发回250,否则发回其他错误代码。
- 客户端告诉服务器邮件需要去往何地:
RCPT TO:url
//这里的url即收件人的地址。
- 若该邮箱存在,发回应答代码250,否则发回其他错误代码。
- 客户端告诉服务器自己准备发送邮件内容:
DATA
- 若准备好接收,发回应答代码354,否则发回其他错误代码。
- 客户端向服务器发送邮件内容: