电子邮件
Email的历史远比Web久远。直到现在,Email也是互联网上应用非常广泛的的服务。
几乎所有的编程语言都支持发送和接收电子邮件。
电子邮件是如何实现发送和接收的呢?
假设我们的电子邮件地址是[email protected],对方的电子邮件地址是[email protected],现在我们用Foxmail之类的软件写好邮件,填上对方的Email地址,点“发送”,邮件就发送出去了。这些电子邮件软件称之为MUA: Mail User Agent--邮件用户代理。
Email从MUA发出去,不是直接发送到对方电脑,而是发送 到MTA: Mail Transfer Agent--邮件传输代理,就是那些Email服务提供商。比如网易、新浪等。由于我们自己的是163.com,所以会投递到网易的MTA,再由网易的MTA投递到对方服务商,也就是新浪的MTA。这个过程中间可能还会经过其他MTA。
Email到达新浪的MTA后,由于对方使用的是@sina.com的邮箱,因此,新浪的MTA会把邮件投递到最终的目的地MDA: Mail Delivery Agent--邮件投递代理。Email到达MDA后,就存在新浪的某个服务器上,存放在某个文件或特殊的数据库里。我们将这个长期保存电子邮件的地方称为电子邮箱。
同普通邮箱类似,Email不会直接到对方电脑,因为对方电脑不一定开机,也不一定联网。对方要取到邮件,必须通过MUA将MDA上的邮件取到自己的电脑上。
所以,一封电子邮件的旅程:
发件人->MUA->MTA->MTA->若干个MTA->MTA->MDA<-MUA<-收件人
有了上述概念,要编写程序来发送接收邮件,本质上是:
1、编写MUA,把邮件发送到MTA
2、编写MUA,把邮件从MDA上取下来。
发邮件时,MUA和MTA使用的协议是SMTP:Simple Mail Transfer Protocol,后面的MTA到MTA也是使用的SMTP协议。
收邮件时,MUA和MDA使用的协议有两种:POP:Post Office Protocol 目前版本3,所以又称为POP3;IMAP:Internet Messagae Access Protocol,目前版本是4,优点是不但能取邮件,还可以直接操作MDA上存储的邮件。比如从收件箱移动到垃圾箱。
邮件客户端软件在发送邮件时,先让你设置SMTP服务器,也就是要发送到哪个MTA上。类似的,从MDA收邮件时MDA服务器也要求验证你的邮箱账号口令,确保不会有人冒充你收取邮件。所以,Outlook类似的软件会让你填写POP3或IMAP服务器地址,邮箱账号和口令。这样,MUA才能顺利的通过POP或者IMAP协议从IMAP上获取邮件。
在使用Python收发邮件前,请先准备好至少两个电子邮箱账号,如[email protected] ,[email protected]等。注意两个电子邮箱账号不要使用同一家邮件服务商。
最后特别注意,目前大多数邮件服务器商都需要手动打开SMTP发信和POP收信的功能,否则只能登陆网页。