美文网首页
Python 邮件处理

Python 邮件处理

作者: dasdadf | 来源:发表于2019-04-04 13:46 被阅读0次
    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()
    

    相关文章

      网友评论

          本文标题:Python 邮件处理

          本文链接:https://www.haomeiwen.com/subject/gbhtiqtx.html