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