python自动读取邮件_Python3读取邮件内容

登录邮箱并读取原始邮件

使用imaplib库实现邮箱登录,所以需要先导入库import imaplib,然后利用imaplib库中的方法登录邮箱并读取邮件

def get_mail(email_address, password):

# 这里的服务器根据需要选择

server = imaplib.IMAP4_SSL("imap.gmail.com")

server.login(email_address, password)

# 邮箱中的文件夹,默认为'INBOX'

inbox = server.select("INBOX")

# 搜索匹配的邮件,第一个参数是字符集,None默认就是ASCII编码,第二个参数是查询条件,这里的ALL就是查找全部

type, data = server.search(None, "ALL")

# 邮件列表,使用空格分割得到邮件索引

msgList = data[0].split()

# 最新邮件,第0封邮件为最早的一封邮件

latest = msgList[len(msgList) - 1]

type, datas = server.fetch(latest, '(RFC822)')

# 使用utf-8解码

text = datas[0][1].decode('utf8')

# 转化为email.message对象

message = email.message_from_string(text)

return message

上述程序返回值为email.message,即原始邮件,如果打印出来,我们会发现这些一些代码,无法读懂,因此接下来我们需要将原始邮件转化为可读邮件

关于email.message

电子邮件消息由 headers 和 payload (其也被称为 content)组成。标题是 RFC 5322 或 RFC 6532 样式的字段名称和值。有效载荷可以是简单文本消息,或二进制对象或子消息的结构化序列,每个子消息具有它们自己的一组头部和它们自己的有效载荷。后一类型的有效载荷由具有诸如 multipart或 message/rfc822 的MIME类型的消息指示。

由 EmailMessage 对象提供的概念模型是与表示消息的 RFC 5322 主体的 payload 耦合的标题的有序字典,其可以是子 EmailMessage 对象的列表。除了用于访问头部名称和值的常规字典方法之外,还存在用于从头部(例如MIME内容类型)访问专用信息,用于在有效载荷上操作,用于生成消息的序列化版本的方法,以及用于递归地遍历对象树。

EmailMessage 类字典接口由标题名称索引,标题名称必须是ASCII值。字典的值是带有一些额外方法的字符串。头以字节保存的形式存储和返回,但字段名匹配大小写不敏感。不像真正的dict,有一个排序的键,并可以有重复的键。提供了其他方法来处理具有重复键的标头。

你可能感兴趣的:(python自动读取邮件)