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 ! ! !