Python quelques lignes de code pour réaliser l'analyse du courrier

avant-propos

Comment implémenter l'analyse de courrier via python? Le format du mail est très complexe, principalement le protocole mime.Cet article part principalement de la réalisation, et le principe spécifique peut être étudié par vous-même.

1. Mise en place

L'analyse du courrier est réalisée via la bibliothèque open source Flanker de mailgun. La bibliothèque contient l'analyse des adresses e-mail et l'analyse du format MIME des e-mails.

Entrez la commande suivante :

pip install flanker

Deuxièmement, l'implémentation du code

1. En-tête du courrier

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()

Le eml.header contient des informations d'en-tête telles que l'expéditeur, le destinataire, le cc et l'heure.

2. Corps de l'e-mail

# 邮件正文
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

Grâce à la fonction de rappel, retirez la partie du corps de l'e-mail 

3. Pièces jointes

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)

Déterminez s'il s'agit d'une pièce jointe par content_type.is_multipart() et enregistrez-la.

Résumer

Le contenu de base de l'analyse des e-mails a été introduit, et les amis qui en ont besoin peuvent communiquer davantage ! ! !

Je suppose que tu aimes

Origine blog.csdn.net/kobepaul123/article/details/121962260
conseillé
Classement