再来回顾一下一封电子邮件的旅程:
发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人
我们知道SMTP可用于发送邮件,如果要收取邮件呢?收取邮件就是编写一个MUA作为客户端,从MDA把邮件获取到用户的电脑或者手机上。收取邮件最常用的协议是POP协议,目前版本号是3,俗称POP3。Python内置一个poplib
模块,实现了POP3协议,可以直接用来收邮件。
注意到POP3协议收取的不是一个已经可以阅读的邮件本身,而是邮件的原始文本,这和SMTP协议很像,SMTP发送的也是经过编码后的一大段文本。要把POP3收取的文本变成可以阅读的邮件,还需要用email
模块提供的各种类来解析原始文本,变成可阅读的邮件对象。
所以,收取邮件分两步:
第一步:用poplib
把邮件的原始文本下载到本地;
第二部:用email
解析原始文本,还原为邮件对象。
一、通过POP3下载邮件
我们来获取最新的一封邮件内容,代码如下:
# -*- coding:utf-8 -*- #获取最新的一封邮件内容 from email.parser import Parser import poplib #输入邮件地址,口令地址和POP3服务器地址 email = input('Email: ') password = input('Password: ') pop3_server = input('POP3 server: ') #连接到POP3服务器 server = poplib.POP3(pop3_server) #可以打开或关闭调试信息 server.set_debuglevel(1) #可选:打印POP3服务器的欢迎文字 print(server.getwelcome().decode('utf-8')) #身份认证 server.user(email