Python pocas líneas de código para realizar el análisis de correo

prefacio

¿Cómo implementar el análisis de correo a través de python? El formato del correo es muy complejo, principalmente el protocolo mimo. Este artículo comienza principalmente desde la realización, y el principio específico puede ser estudiado por usted mismo.

1. Instalación

El análisis de correo se logra a través de la biblioteca Flanker de código abierto de mailgun. La biblioteca contiene análisis de direcciones de correo electrónico y análisis de formato MIME de correo electrónico.

Introduzca el siguiente comando:

pip install flanker

En segundo lugar, la implementación del código.

1. Encabezado de correo

def emlAnayalyse(path):
    with open(path, 'rb') as fhdl:
        raw_email = fhdl.read()
        eml = mime.from_string(raw_email)
        subject = eml.subject
        eml_header_from = eml.headers.get('From')
        eml_header_to = eml.headers.get('To')
        eml_header_cc=eml.headers.get('Cc')
        eml_time = eml.headers.get('Date')
        # get_annex(eml, '1')
        eml_attachs=attachEml1(eml)
        eml_body = contentEml(eml)
        f = HTMLFilter()
        f.feed(eml_body)
        print(f.text)
        
def main():
    path='邮件名.eml'
    emlAnayalyse(path)
    
if __name__ == "__main__":
    main()

El eml.header contiene información de encabezado como el remitente, el destinatario, cc y la hora.

2. Cuerpo del correo electrónico

# 邮件正文
def contentEml(eml):
    # 判断是否为单部分

    if eml.content_type.is_singlepart():
        eml_body = eml.body
    else:
        eml_body = ''
        for part in eml.parts:
            # 判断是否是多部分
            if part.content_type.is_multipart():
                eml_body = contentEml(part)
            else:
                if part.content_type.main == 'text':
                    eml_body = part.body
    return eml_body

A través de la función de devolución de llamada, elimine la parte del cuerpo del correo electrónico 

3. Archivos adjuntos de correo

def attachEml1(eml):
    for part in eml.parts:
        if not part.content_type.is_multipart():    
            name = part.detected_file_name

            with open(name, 'wb') as annex:
                annex.write(part.body)

Determine si se trata de un archivo adjunto mediante content_type.is_multipart() y guárdelo.

Resumir

Se ha introducido el contenido básico del análisis de correo electrónico, y los amigos que lo necesitan pueden comunicarse más. ! !

Supongo que te gusta

Origin blog.csdn.net/kobepaul123/article/details/121962260
Recomendado
Clasificación