一、邮件发送、收取过程
图示的六个步骤分别进行如下的说明:
①、用户A的电子邮箱为:xx@qq.com,通过邮件客户端软件写好一封邮件,交到QQ的邮件服务器,这一步使用的协议是SMTP,对应图示的①;
②、QQ邮箱会根据用户A发送的邮件进行解析,也就是根据收件地址判断是否是自己管辖的账户,如果收件地址也是QQ邮箱,那么会直接存放到自己的存储空间。这里我们假设收件地址不是QQ邮箱,而是163邮箱,那么QQ邮箱就会将邮件转发到163邮箱服务器,转发使用的协议也是SMTP,对应图示的②;
③、163邮箱服务器接收到QQ邮箱转发过来的邮件,也会判断收件地址是否是自己,发现是自己的账户,那么就会将QQ邮箱转发过来的邮件存放到自己的内部存储空间,对应图示的③;
④、用户A将邮件发送了之后,就会通知用户B去指定的邮箱收取邮件。用户B会通过邮件客户端软件先向163邮箱服务器请求,要求收取自己的邮件,对应图示的④;
⑤、163邮箱服务器收到用户B的请求后,会从自己的存储空间中取出B未收取的邮件,对应图示⑤;
⑥、163邮箱服务器取出用户B未收取的邮件后,将邮件发给用户B,对应图示的⑥;最后三步用户B收取邮件的过程,使用的协议是POP3;
上面的步骤可能大家不太明白,这里面出现了很多名词,比如邮件客户端软件,邮件服务器,SMTP和POP3协议(邮件传输协议)等等。不明白没关系,接下来我们来详细介绍这些名词
1、基本概念:
- SMTP邮件服务器:用户替用户发送邮件和接收外面发送给本地用户的邮件,对应上图的第一、二步。它相当于现实生活中邮局的邮件接收部门(可接收普通用户要投出的邮件和其他邮局投递进来的邮件)。
- POP3/IMAP邮件服务器:用户帮助用户读取SMTP邮件服务器接收进来的邮件,对应上图的第六步。它相当于专门为前来取包裹的用户提供服务的部门。
2、协议:
1)三个协议:
- SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议,属于 TCP/IP 协议簇(默认端口25)。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则。SMTP是一个“推”的协议,它不允许根据需要从远程服务器上“拉”来消息。
- POP3协议:全称为 Post Office Protocol,是TCP/IP协议族中的一员(默认端口是110),它定义了邮件客户端软件和POP3邮件服务器的通信规则,主要用于支持使用客户端远程管理在服务器上的电子邮件。
- IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,是一个应用层协议(端口是143),它是对POP3协议的一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则,主要用来从本地邮件客户端(Outlook Express、Foxmail、Mozilla Thunderbird等)访问远程服务器上的邮件。
2)POP3和IMAP区别:
IMAP像POP3那样提供了方便的邮件下载服务,让用户能进行离线阅读。IMAP和POP3是邮件访问最为普遍的Internet标准协议。不同的是:
- IMAP提供Webmail 与电子邮件客户端之间的双向通信,客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上(如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。)。而POP3在客户端的操作不会反馈到服务器上。
- IMAP更好地支持了从多个不同设备中随时访问新邮件。
- IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。
- POP3需要下载未阅读的邮件,IMAP可以不用把所有的邮件全部下载,而是通过客户端直接对服务器上的邮件进行操作。所有通过IMAP传输的数据都会被加密,从而保证通信的安全性。
- IMAP 整体上为用户带来更为便捷和可靠的体验。POP3 更易丢失邮件或多次下载相同的邮件。
3)配置:
根据上面可以知道:IMAP协议是用来接收邮件用的,使用IMAP还可以同步客户端和服务器之间的操作。SMTP都是用来发送邮件的时候用的,上面也提到,SMTP是一种“推”的协议,不允许从服务器“拿”消息。
4)常用邮箱的首发服务器:
网易邮箱支持POP3/SMTP/IMAP服务,可以通过电脑客户端软件更好地收发邮件,网易邮箱已经默认开启POP3/SMTP/IMAP服务。QQ邮箱和Gmail邮箱内的「POP3/SMTP服务」和「IMAP/SMTP服务」一般都是关闭的,需要您手动开启。
- 新浪免费邮箱发信(smtp)服务器的地址为:smtp.sina.com
- 新浪免费邮箱收信(pop3)服务器的地址为:pop.sina.com
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密,客户与服务器应用之间的通信不被攻击者窃听。
如果您的电子邮件客户端支持SSL,可以在设置中选择使用SSL。当选择了使用SSL协议时,需要修改相应的服务器端口号。QQ邮箱使用SSL的通用配置如下:
- 接收邮件服务器:pop.qq.com,使用SSL,端口号995
- 发送邮件服务器:smtp.qq.com,使用SSL,端口号465或587
国内外主要邮箱的POP3/SMTP/IMAP的客户端设置,POP3是指接收邮件的服务器。有的邮件服务是POP3,而有的叫POP。不同邮箱,各自的POP服务器地址也是不同的。
- QQ邮箱 POP3:pop.qq.com SMTP:smtp.qq.com IMAP:imap.qq.com 端口:143
- Foxmail POP3:pop.foxmail.com SMTP:smtp.foxmail.com
- 移动139邮箱 POP3:pop.139.com SMTP:smtp.139.com
- 天翼189邮箱 POP3:pop.189.cn SMTP:smtp.189.cn
- 163邮箱 POP3:pop.163.com SMTP:smtp.163.com
- 163Vip邮箱 POP3:pop.vip.163.com SMTP:smtp.vip.163.com
- 126邮箱 POP3:pop3.126.com SMTP:smtp.126.com
- Gmail POP3:pop.gmail.com SMTP:smtp.gmail.com IMAP:imap.gmail.com 端口:995 465 993
- Yahoo邮箱 POP3:pop.mail.yahoo.com SMTP:smtp.mail.yahoo.com
- Hotmail POP3:pop3.live.com SMTP:smtp.live.com 端口:995
- Sogou邮箱 POP3:pop3.mail.sogou.com SMTP:smtp.mail.sogou.com
二、使用Smtp协议手工发送邮件
SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则。SMTP协议的通信双方采用一问一答的命令/响应形式进行对话,SMTP协议分为标准SMTP协议和扩展SMTP协议,标准SMTP协议是1982年在RFC821 文档中定义的,而扩展SMTP协议是1995年在RFC1869 文档中定义的。扩展SMTP协议在标准 SMTP协议基础上的改动非常小,主要增加了邮件安全方面的认证功能,现在我们说的SMTP协议基本上都是扩展SMTP协议。RFC1869文档参考如下:https://tools.ietf.org/html/rfc1869
SMTP 协议中一共定义了18条命令,但是发送一封电子邮件的过程通常只需6条命令,语法格式总结如下:
大家可能光看这些命令不太清楚,下面我总结了一下使用Smtp协议手工发送邮件的步骤:
①、和SMTP服务器建立连接,telnet smtp.163.com 25。这条命令是和163邮箱建立连接,如果是和QQ,那么将163换成qq即可,同理别的邮箱也是一样。后面的数字25表示SMTP服务器的端口号。
②、ehlo 发件人用户名。这没什么好说的,就是告诉SMTP服务器发送者的用户名。
③、选择登录认证方式,一般我们在第二步执行完后,会提示有几种认证方式,我们一般选择的是login。即输入命令:auth login
④、分别输入经过Base64加密后的用户名和密码。注意必须是要经过 Base64加密后的用户名和密码,大家可以网上在线转,也可以用后面给的代码进行转换。
⑤、指明邮件的发送人和收件人
mail from:<xxx@163.com>
rcpt to:<xxx@qq.com>
⑥、输入data命令,然后编写要发送的邮件内容,邮件的编写格式规则如下:
第一步:输入data
第二步:输入邮件内容
from:<xxx@163.com> ----邮件头发件人地址
to:<xxx@qq.com> ----邮件头收件人地址
subject:hello world ----邮件头主题
-----空行
This is the first email sent by hand using the SMTP protocol ----邮件的具体内容
⑦、输入“.”表示邮件内容输入完毕
⑧、输入quit命令断开与邮件服务器的连接
下面我用动图的形式给大家展示用Smtp协议手工发送邮件的前面三个步骤:
上面我执行到第4步,剩下的步骤我就直接截图了:
三、3、使用POP3协议手工接收邮件
邮件服务商专门为每个用户申请的电子邮箱提供了专门的存储空间,SMTP 服务器将接收到的邮件保存到相应用户的存储空间。用户要从邮件服务提供商提供的电子邮箱中获取自己的电子邮件,那么就需要POP3 邮件服务器来完成。
POP3协议:全称为 Post Office Protocol,它定义了邮件客户端程序和POP3邮件服务器的通信规则。相关命令如下:
下面我们演示用POP3协议手工接收邮件:
第一步:用telnet 连接POP3的163邮箱服务器
接下来收取邮件: