SMTP邮件发送工具操作简便,只需连接邮件服务器,通常采用非SSL端口号。登录时必须提供SMTP详细地址、端口号、账户以及登录密码。【软件使用相关】SMTP协议在RFC 821中被定义,其主要功能是将邮件消息从发件人的邮件服务器传输到收件人的邮件服务器。SMTP的历史悠久,其RFC文档于1982年撰写,而实际应用则更早。尽管SMTP具有许多独特之处(其在互联网上的普遍存在便是证明),但它仍是一种具有“历史悠久”特点的传统战略。例如它要求所有邮件消息的内容(而不仅仅是标题)都必须是简单的7位ASCII字符格式。这一要求在20世纪80年代初期具有重要意义,当时互联网的传输能力有限,没有人会在电子邮件中附加大量图像、音频或视频文件格式。但是在多媒体时代,这一限制似乎显得有些过时——它迫使二进制多媒体数据在通过SMTP传输之前先编码成7位ASCII文本;SMTP传输完成后,再将相应的7位ASCII文本邮件消息解码成二进制数据。HTTP无需进行此类编码解码操作。
SMTP操作过程可以通过以下普遍情况来理解。假设甲给乙发送一个简单的ASCII文本邮件消息:甲启动自己的电子邮件客户端,获取乙的电子邮件地址,编写邮件内容,然后通过客户端发送邮件。甲的客户端将邮件发送至她的邮件服务器,服务器将邮件放入队列中。运行在甲的邮件服务器上的SMTP客户端在看到队列中的邮件后,会开启一个到运行在乙的邮件服务器上的SMTP服务器的TCP连接。在经过一些SMTP握手后,SMTP客户端将邮件发送至TCP连接上。在乙的邮件服务器上,SMTP服务器接收到邮件后,将其传递给乙的邮箱。乙可以随时使用自己的电子邮件客户端阅读该邮件。值得注意的是,SMTP通常不会使用中间邮件服务器进行邮件传输,即使源端和目的端邮件服务器位于地球的两端也是如此。例如如果Alice的邮件服务器在香港,而Bob的邮件服务器在阿拉巴马州,那么所建立的TCP连接将是这两台服务器之间的连接。具体来说如果Bob的邮件服务器不工作,那么甲发送给乙的邮件将留在甲的邮件服务器上等待重试,而不会存储在任何中间邮件服务器中。
以下是SMTP将邮件消息从发送端邮件服务器传输到目标邮件服务器的实际过程:我们可以看到,SMTP协议与我们在日常互动中使用的礼仪有许多共同之处。首先运行在发送端邮件服务器上的SMTP客户端会尝试创建一个到运行在目标邮件服务器上的SMTP服务器端口号25之间的TCP连接。如果目标邮件服务器当时未工作,SMTP客户端将等待一段时间后再尝试创建该连接。一旦连接创建成功,SMTP客户端和服务器会先进行一些网络层的握手操作。正如我们在传递物品之前通常先简单自我介绍一样,SMTP客户端和服务器在传输信息内容之前也会先简单自我介绍。在这个SMTP握手环节中,SMTP客户端向服务器分别强调发件人和收件人的电子邮件地址。自我介绍结束后,客户端传出邮件消息。SMTP可以依赖TCP提供的可靠传输服务将消息无错地传送到服务器。如果客户端还有其他邮件消息需要发送至同一个服务器,它将在同一个TCP连接上重复上述过程;否则,它将指示TCP关闭该连接。
我们可以简单地将SMTP与HTTP进行比较。这两个协议都是用于从一台服务器向另一台服务器传输文档;HTTP用于从Web服务器向Web客户端(即浏览器)传输文档(或目标),SMTP用于从一个邮件服务器向另一个邮件服务器传输文档(即电子邮件消息)。在传输文档时,SMTP和HTTP都使用持久连接。由此可见这两个协议具有一些共同的特点,但它们之间也存在明显的区别。首先HTTP大部分是一个拉式协议——有人将信息内容上传至Web服务器中,客户则在方便的情况下使用HTTP将这些信息内容从服务器上拉回。更准确地说HTTP连接是由想要接收文档的服务器发起的。SMTP则大部分是一个推式协议——发送端邮件服务器将文档消息推送给目标邮件服务器。更准确地说SMTP连接是由想要发送文档的服务器发起的。SMTP和HTTP的第二个关键区别是,SMTP规定包含内容在内的每个邮件消息都必须是7位ASCII格式。