zoukankan      html  css  js  c++  java
  • poplib

    读取邮件内容

    import re
    from email.parser import Parser
    import poplib
    from email.header import decode_header
    
    
    def decodeMsgHeader(header):
        """
        解码头文件
        :param header: 需解码的内容
        :return:
        """
        value, charset = decode_header(header)[0]
        if charset:
            value = value.decode(charset)
        return value
    
    
    def decodeBody(msgPart):
        """
        解码内容
       :param msgPart: 邮件某部分
        """
        # 判断邮件内容的类型,text/html
        contentType = msgPart.get_content_type() 
        textContent = ""
        if contentType in ["image/png","application/octet-stream"]:
            return
        if contentType == 'multipart/alternative': #寻找当前part的最后一个负载,即为正文
            msgPart =  msgPart.get_payload()[-1]
        #not (contentType == 'text/plain' or contentType == 'text/html')
        content = msgPart.get_payload(decode=True)
        charset = msgPart.get_charset()
        if charset is None:
            contentType = msgPart.get('Content-Type', '').lower()
            position = contentType.find('charset=')
            if position >= 0:
                charset = contentType[position + 8:].strip()
        if charset:
            textContent = content.decode(charset)
        return textContent
    
    poplib._MAXLINE=20480
    userAdr = "@s.cn"
    userPwd = "!"
    popHost = "pop.qiye.aliyun.com"
    pop3Server = poplib.POP3(popHost)
    pop3Server.user(userAdr)
    pop3Server.pass_(userPwd)
    
    
    """获取邮件数量和占用空间"""
    messageCount, mailboxSize = pop3Server.stat()
    
    """获取邮件请求返回状态码、每封邮件的字节大小(b'第几封邮件 此邮件字节大小')、"""
    response, msgNumOctets, octets = pop3Server.list()
    
    """ 获取任意一封邮件的邮件对象【第一封邮件的编号为1,而不是0】"""
    # 获取最后一封
    response, msgLines, octets = pop3Server.retr(messageCount)
    # 第一封
    response, msgLines, octets = pop3Server.retr(1)
    
    # msgLines中为该邮件的每行数据,先将内容连接成字符串,再转化为email.message.Message对象
    msgLinesToStr = b"
    ".join(msgLines).decode("utf8", "ignore")
    messageObject = Parser().parsestr(msgLinesToStr)
    
    
    # 发件时间
    msgDate = messageObject["date"]
    
    
    # 标题
    senderContent = messageObject["From"] 
    # parseaddr()函数返回的是一个元组(realname, emailAddress)
    senderRealName, senderAdr = parseaddr(senderContent)
    # 将加密的名称进行解码
    senderRealName = decodeMsgHeader(senderRealName)
    msgHeader = messageObject["Subject"]
    # 对头文件进行解码
    msgHeader = decodeMsgHeader(msgHeader )
    
    messageObject.is_multipart():  # 判断邮件是否由多个部分构成
    
    messageParts = messageObject.get_payload()  # 获取邮件附载部分
    
    
    
    
    
  • 相关阅读:
    微信小程序 阻止冒泡事件
    vant/weapp goodsaction 显示样式不正常问题
    微信小程序图表工具wxcharts
    webstorm 不识别 rpx 格式化出错
    小程序自定义 tabbar 以vant weapp 调试工具不显示,但是在真机显示
    小程序自定义 tabbar 以vant weapp为例
    TypeScript之环境搭建
    模块化打包工具webpack
    【纪中受难记】——Day2.感觉冤的慌
    计算机精英协会考核题 —— 第三题:斐波那契数
  • 原文地址:https://www.cnblogs.com/cizao/p/14054813.html
Copyright © 2011-2022 走看看