下图展示了因特网邮件系统的高层概貌。我们看到,该系统由三类主要部件构成:用户代理、邮件服务器利简单邮件传送协议(simple Mail Transfer Protocol,简称SMTP)。我们将在这样的上下文中说明每类部件:发信人A1ice给收传人Bob发送一个电于邮件消息。用户代理允许用户阅读、回复、转寄、保存和编写邮件消息(电子邮件的用户代理有时称为邮件阅读器,不过我们在本文中避免使用这个说法)。Alice写完电子邮件消息后,她的用户代理把这个消息发送给邮件服务器,再由该邮件服务器把这个消息排入外出消息队列中。当Bob想阅读电子邮件消息时,他的用户代理将从他在其邮件服务器上的邮箱中取得邮件。20世纪90年代后期,图形用户界面(GUI)的电子邮件用户代理变得流行起来,它们允许用户阅读和编写多媒体消息。当前流行的用户代理包括Ootlook,foxmail等。公共域中还有许多基于文本的电于邮件用户代理,包括mail、pine和elm。
S:220 hamburger.edu C:HELO crepes.fr S:250 Hello crepes.fr,pleased to meet you C:MAIL FROM: S:250 alice@crepes.fr ... Serder OK C:RCPT TO: S:250 bob@hamburger.edu...Recipient OK C:DATA S:354 Enter mail,end with "." on a line by its self C:Do you like ketchup? C:How about pickles? C:. S;250 Message accepted for delivery C:QUIT S:221 hamburger.edu cloing connection
在这个例子中,客户发送了一个从邮件服务器主机crepes.fr到hamburger.edu的邮件消息,信体内容为:“Do you like ketchup?How about pickles?”。客户总共发出了5个命令,分别为:HELO,MAIL FROM,RCPT TO,DATA和QUIT。这些命令的含义是不言自明的。服务器给每个命令发回应答,其中每个应答都由应答码和一些英语解释(可选)构成。这里需指出的是,SMTP使用持久连接,也就是说,如果发送邮件服务器有多个邮件消息需发送到同一个接收邮件服务器,那么所有这些消息可以在同一个TCP连接中发送。对于其中的每一个消息,客户以一个新的“HELO crepes.fr”命令开始整个消息发送过程,但是QUIT命令要等到所有消息都发送完之后才发出。