如何通过邮局协议提取邮件

幕后故事看通过邮局协议提取邮件

用于从远程服务器检索邮件的邮局协议(POP)是一个非常简单的协议。 它以直接的方式定义了基本的功能,并且易于实现。 当然,这也很容易理解。

让我们来看看当您的电子邮件程序在POP帐户中获取邮件时幕后发生的情况。 首先,它需要连接到服务器。

嗨,它是我

通常,POP服务器监听端口110的传入连接。 从POP客户端(您的电子邮件程序)连接后,它会希望通过+ OK pop.philo.org做好准备或类似的事情。 + OK表示一切都是 - 确定。 它的负值相当于-ERR ,这意味着出现了问题。 也许你的电子邮件客户端已经向你显示了这些负面服务器回复之一。

登录中

现在服务器已经迎接我们,我们需要使用我们的用户名登录 (假设用户名是“排”,服务器说的用斜体打印):

+ OK pop.philo.org准备好了
用户排

由于具有此名称的用户确实存在,POP服务器以+ OK进行响应,也许我们并不关心其中的一些乱码。 如果服务器上没有这样的用户,它当然会让我们恐慌,而-ERR用户不明

为了使认证完成,我们还需要提供我们的密码。 这是通过“pass”命令完成的:

+确定发送您的密码
通过noplato

如果我们正确输入密码,服务器会用+ OK密码或POP服务器的程序员想到的回应。 重要的部分是+ OK 。 不幸的是,密码也可能是错误的。 服务器用干-ERR用户名和密码不匹配 (如果你使用你的用户名作为你的密码)。

如果一切顺利,但是,我们连接到服务器,它知道我们是谁,因此我们准备好偷看新到邮件。

你有邮件!

在我们成功登录到服务器上的POP帐户后,我们可能首先想知道是否有新邮件,然后可能有多少。

用于检索这些基本邮箱统计信息的命令是STAT

可能的服务器响应是+ OK 18 67042 。 在这种情况下, + OK符号后面的内容确实很重要。 紧接着是邮箱中的邮件数量,然后用空格分隔,以八位字节(八位字节为8位)表示邮箱的大小。

STAT
+确定18 67042

如果没有邮件,则服务器以+ OK 0 0响应。 由于服务器上有18条新消息,我们可以使用LIST命令列出这些消息。 作为响应,服务器按以下格式列出消息:

LIST
+确定18条消息(67042个八位字节)
1 2552
2 3297
...
18 3270

消息一次列出一个,每个消息的大小都以八位字节为单位。 该列表以一行自行结束。

LIST命令可以将消息的编号作为可选参数,例如LIST 2 。 服务器对此请求的响应应为+ OK 2 3297 ,消息号后跟消息大小。 如果您尝试列出不存在的消息(如LIST 23) ,则服务器显示没有想象,并说: -ERR没有这样的消息

大检索(和删除)

现在我们知道我们帐户中有多少条消息,它们有多大,最后是检索它们的时间,以便我们也可以读取它们。

现在,在查明我们是否有新邮件后,就是真实的东西。 消息号码作为RETR命令的参数逐个检索。

服务器以多行的形式响应+ OK和消息。 该消息自行终止一段时间。 例如:

RETR 1
+确定2552个八比特组
胡说!

如果我们试图得到一条不存在的消息,我们会得到-ERR没有这样的消息

现在我们可以使用DELE命令删除消息。 (当然,我们也可以在没有检索到的情况下删除邮件,如果它是那些日子之一的话)。

很高兴知道服务器不会立即清除消息。 它只是标记为删除。 如果我们经常结束与服务器的连接,则只会发生实际删除。 因此,例如,如果连接突然死亡,就不会丢失邮件。

服务器对DELE命令的响应是+ OK消息被删除

DELE 1
+确定消息1已删除

如果确实是那些日子之一,并且我们标记了一条我们不希望被删除的删除消息,则可以通过重置删除标记来取消删除所有消息。 RSET命令将邮箱恢复到我们登录之前的状态。

服务器响应一个+ OK和可能的消息数量:

RSET
+确定18消息

在我们检索并删除了所有消息之后,是时候使用QUIT命令说再见了。 这将清除标记为删除的消息并关闭连接。 服务器响应+ OK和告别信息:

放弃
再见,再见

服务器可能无法删除消息。 然后它会响应一个错误,如-ERR消息2未被删除