17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

380<br />

La bibliothèque standard<br />

TROISIÈME PARTIE<br />

import sys<br />

import imaplib<br />

import socket<br />

from email import Message<br />

from email.Errors import HeaderParseError<br />

from email.Header import decode_header as decoder<br />

from email.Header import make_header<br />

from encodings import exceptions as exceptions_codage<br />

options = []<br />

def decode_header(header, encoding='utf8'):<br />

"""Renvoie un en-tête encodé avec le même codec."""<br />

try:<br />

header_decode = decoder(header)<br />

except HeaderParseError:<br />

return header<br />

unified = [(decoded, encoding) for decoded, charset in<br />

header_decode]<br />

return unicode(make_header(unified))<br />

class TextMessage(object):<br />

"""Permet de renvoyer le texte à l'envers, en utilisant<br />

un séparateur de ligne spécifique en lecture et \n en sortie.<br />

"""<br />

def __init__(self, text):<br />

self.lines = text.split('\015\012')<br />

self.lines.reverse()<br />

def readline(self):<br />

try:<br />

return '%s\n' % self.lines.pop()<br />

except IndexError:<br />

return ''<br />

def get_mails(server, user, password):<br />

"""Renvoie le sujet et l'auteur des 5 derniers e-mails non lus"""<br />

imap = imaplib.IMAP4_SSL(server)<br />

imap.login(user, password)<br />

try:<br />

imap.select('INBOX')<br />

status, uids = imap.uid('search', 'UNSEEN')<br />

if status != 'OK':<br />

logging.debug('Impossible de récupérer les informations')<br />

sys.exit(0)<br />

uids = uids[0].split(' ')

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!