怎么发邮件呢

怎么发邮件呢,第1张

普通邮件怎么发送(怎么样发邮件)

如何发送邮件(如何发送普通邮件)

我们经常使用电子邮件客户端,如Foxmail和Outlook来发送和接收电子邮件。每个人都应该知道电子邮件协议的基本知识。发送邮件是通过SMTP协议完成的,接收邮件是通过POP3协议完成的。由于工作原因,作者对邮件协议的通信过程进行了完整的分析。这里对邮件协议的通信过程进行梳理,巩固对通信协议的理解。

协议是什么

我曾经做过一个基于UDP字节序列的应用:两个进程[一个用Java开发,一个用C++开发]之间,通过逐个解析UDP包中的字节数据来完成通信服务,最小的业务数据单位是比特。

大概的过程是这样的:

  • 循环读取UDP数据包

  • 先取出第一个字节。

    读取该字节的前两位数据,代表某个业务类型。

    接下来的6位代表服务数据的总长度。

    在第二个字节后循环数据,直到达到总长度。

    很多年过去了,那个应用的具体功能已经忘了,但是UDP字节数据的分析过程还是很清晰的。这让我明白了什么是协议。它实际上是一个基于简单处理规则的通信协议,可以看作是一个自定义的应用层协议。

    这个可以扩展到OSI七层模型中的其他协议,类似于这个简单的协议,但是通信规则更复杂!

    SMTP 协议基础

    SMTP被称为“简单邮件传输协议”。这是来自百度百科的解释:

    SMTP是一个相对简单的基于文本的协议。在其上指定一个或多个消息的接收者(在大多数情况下,它被确认存在),然后消息文本将被传输。您可以通过telnet程序简单地测试SMTP服务器。对于SMTP TCP端口25,要决定给定域名的SMTP服务器,需要MX(邮件交换)DNS。

    让我们来看看SMTP的状态代码和命令集:

    SMTP的状态代码和命令集

    接下来,我们来看看Foxmail的邮件的包捕获分析。在消息中,状态码是邮件服务器响应的内容,命令由客户端发起。

    认证

    客户端发起SMTP通信以连接到邮件服务器。这是我截获的解析过的信息:

    沟通过程

    这里使用的关键命令是EHLO和认证登录,用于启动会话和认证。客户端连接到服务器后的通信过程如下:

  • 服务器回复220状态码以通知客户端它准备好了;

  • 向客户端发送EHLO命令;

    服务器回复250,表示欢迎;

    服务器再回复一堆250(对应中间步骤);

    客户端身份验证登录身份验证已启动;

    服务器334等待客户端发送认证信息;

    客户端发送认证信息的密文数据,进行两次密文通信;

    回复235服务器认证成功,认证过程完成。

    认证成功后,客户端将发件箱和所有收件箱地址发送给服务器,服务器验证后回复250 OK。

    服务器验证回复

    数据发送

    数据传输结果

    发送消息正文的过程:

  • 客户端发送数据命令;

  • 回复服务器354状态码,通知客户端可以发送邮件内容;

    客户端开始发送消息正文;

    服务器端回复250;

    客户端发送退出命令以结束会话;

    服务器回复221,告知客户端它正在关闭传输信道。

    以上总结的是一封邮件的完整流程,就像客户端和服务器之间的调用空。每一步都回答的有条不紊。这么看,发现通信协议还挺有意思的。这大概就是应用层协议的大致思路。定义业务规则和状态代码,按照双方约定的流程进行通话。

    了解这个过程后,如果工作中需要沟通,可以参考网络协议的设计思路。实现基于Socket的通信服务应该不复杂!

    欢迎分享,转载请注明来源:内存溢出

    原文地址: https://outofmemory.cn/bake/5448543.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-12-11
    下一篇 2022-12-11

    发表评论

    登录后才能评论

    评论列表(0条)

    保存