Python 邮件处理

imaplib

基础概念

POP 和 IMAP

第一个用于下载邮件的协议称为邮局协议(Post Office Protocal, POP),记录在 RFC 918 中。邮局协议的目的是让用户的工作站可以访问邮箱服务器里的邮件并可以通过简单邮件传输协议(SMTP)将邮件发送到邮件服务器。POP协议的最新版本是第三版,也成为 POP3
在POP出现几年之后有了一个与之竞争的协议,即因特网消息访问协议(Internet Message Access Protocol, IMAP),它旨在提供比POP更完整的解决方案(各客户端间的一致性)。当前广泛使用的版本为 IMAP4rev1

邮箱配置

一般邮箱的设置里面都会有,打开IMAP

代码

from email import header
import imaplib
import email

username =  *
password = *
# 连接服务器
session = imaplib.IMAP4_SSL(host='imap.qq.com')
# 登陆
login_statue, login_message = session.login(username, password)
if login_statue != 'OK':
    raise('Login Fail')
session.select('INBOX')
# QQ邮箱的search就是个坑,只有从所有的里面慢慢搜了
search_statue, uids = session.search(None, 'ALL')
if search_statue != 'OK':
    raise('Search Fail')
list_uid = uids[0].split()
for uid in list_uid[::-1]:
    fetch_statue, fetch_content = session.fetch(uid, '(RFC822)')
    if fetch_statue != 'OK':
        raise('Fecth content Fail')
    msg = email.message_from_string(fetch_content[0][1])
    subject, encoding = header.decode_header(msg['subject'])[0]
    encoding = 'utf-8' if encoding is None else encoding 
    # 这里是我要用的名字,自行忽略
    subject_content = subject.decode(encoding).strip().split()[-1]
    if subject_content in names:
        # 遍历这个邮件
        for part in msg.walk():
            if part.get_content_maintype() == 'multipart':
                continue
            if part.get('Content-Disposition') is None:
                continue
            file_out = os.path.join(
                dir_out, '{}.tar.gz'.format(subject_content))
            with open(file_out, 'wb') as OUT:
                print(part.get_payload(decode=True), end='', file=OUT)
session.close()
session.logout()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • POP3、SMTP和IMAP之间的区别和联系简单地说,SMTP管‘发’,POP3/IMAP管‘收’。举个例子,你坐...
    测试的旅途中阅读 5,919评论 0 1
  • 最近通过python写了一个小的用例,现在demo基本上完成了,把用到的知识进行下梳理。内容就由近到远吧,因为眼前...
    小Ping平阅读 2,415评论 0 0
  • 前言 邮箱对我们来说是再熟悉不过了,它与我们的生活、工作紧密联系在一起:登录、注册、往来沟通...无处不在; 邮箱...
    Jack_lin阅读 5,565评论 0 3
  • (一) - 邮箱收发协议 什么是POP3、SMTP和IMAP协议 电子邮件工作原理 POP3 POP3是Post ...
    颜值不够才华来凑阅读 11,126评论 7 14
  • 一大早被叫去开会,因为业务员出现错误,领导发火,领导的思维变化的太快,签核流程又改来改去的,让我有点不适应。现在大...
    小甜甜007阅读 728评论 0 0