Flanker

imagen / Salfordlad1
  
11 de Junio de 2015   0  

Flanker es una librería open source escrita en Python por el equipo MailGun. Flanker actualmente consta de una librería de análisis de direcciones (flanker.addresslib), así como una librería de análisis sintáctico de datos MIME (flanker.mime). Veamos algunos ejemplos de uso.

 

Instalación.

Su instalación es de lo más sencillo y no se requiere ser cliente de mailgun para utilizarlo. Podemos instalarlo directamente utilizando la herramienta PIP o descargarlo en github.

Pero antes de instalar necesitamos contar con archivos de cabeceras Python que se instalan de la siguiente manera:

1
2
3
4
5
6
7
# usuarios ubuntu
 
sudo apt-get install python-dev
 
# usuarios fedora
 
sudo yum install python-devel

Una vez echo, instalamos Flanker de la siguiente manera:

1
pip install flanker

Ejemplos de uso.

 

Validación de direcciones de correo.

Con esta librería podemos verificar si una dirección de correo electrónico es válida:

1
2
3
4
>>> from flanker.addresslib import address
>>>
>>> address.validate_address('foo@mailgun.com')
foo@mailgun.com

Igualmente podemos validar una lista de emails:

1
2
3
4
>>> from flanker.addresslib import address
>>>
>>> address.validate_list('foo@mailgun.com, bar@mailgun.com, @mailgun.com', as_tuple=True)
([foo@mailgun.com, bar@mailgun.com], ['@mailgun.com'])

 

MIME Parsing.

Utilizaremos el siguiente texto como ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=001a11c1d71697c7f004e6856996
From: Bob <bob@example.com>
To: Alice <alice@example.com>
Subject: hello, world
Date: Mon, 16 Sep 2013 12:43:03 -0700
 
--001a11c1d71697c7f004e6856996
Content-Type: text/plain; charset=us-ascii
 
Hello, *Alice*
 
--001a11c1d71697c7f004e6856996
Content-Type: text/html; charset=us-ascii
 
<p>Hello, <b>Alice</b></p>
 
--001a11c1d71697c7f004e6856996--

Parseamos el mensaje:

1
2
3
>>> from flanker import mime
>>>
>>> msg = mime.from_string(message_string)

Obtenemos los MIME headers message:

1
2
3
4
5
6
7
8
9
10
11
>>> from flanker import mime
>>>
>>> msg = mime.from_string(message_string)
>>> msg.headers.items()
[('Mime-Version''1.0'),
('Content-Type',
('multipart/alternative', {'boundary': u'001a11c1d71697c7f004e6856996'})),
('From''Bob <bob@example.com>'),
('To''Alice <alice@example.com>'),
('Subject''hello, world'),
('Date''Mon, 16 Sep 2013 12:43:03 -0700')]

Miembros útiles de los content_type con predicados:

1
2
3
4
5
6
7
8
9
10
11
>>> from flanker import mime
>>> msg = mime.from_string(message_string)
>>>
>>> msg.content_type.is_multipart()
True
>>>
>>> msg.content_type.is_singlepart()
False
>>>
>>> msg.content_type.is_message_container()
False

Espero les sea útil esta librería, es sencilla pero creo que se le puede sacar mucho provecho a la hora de requerir validaciones en los correos antes de enviarlos :)



Alex Dzul

FullStack Python / Django Developer. #jslove

Etiquetas

Temas relacionados