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.

Discussion<br />

Exercices corrigés<br />

CHAPITRE 11<br />

for index, uid in enumerated(reversed(uids)):<br />

uid = uid.strip()<br />

if index == 5:<br />

break<br />

if uid == '':<br />

continue<br />

status, res = imap.uid('fetch', uid,<br />

'(BODY.PEEK[HEADER.FIELDS (From Subject)])')<br />

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

logging.debug('Impossible de lire le mail n°%s' % uid)<br />

continue<br />

message = Message(TextMessage(res[0][1]), 0)<br />

subject = decode_header(message['subject'])<br />

from_ = decode_header(message['from'])<br />

yield '%s (%s)' % (subject, from_)<br />

finally:<br />

imap.close()<br />

def main(options, arguments, parser):<br />

if len(arguments) != 3:<br />

print(parser.usage)<br />

sys.exit(0)<br />

server = arguments[0]<br />

user = arguments[1]<br />

password = arguments[2]<br />

for mail_info in get_mails(server, user, password):<br />

print(mail_info)<br />

if __name__ == '__main__':<br />

parser = OptionParser()<br />

parser.usage = 'usage: server user pass'<br />

for option in options:<br />

param = option['noms']<br />

del option['noms']<br />

parser.add_option(*param, **option)<br />

options, arguments = parser.parse_args()<br />

sys.argv[:] = arguments<br />

main(options, arguments, parser)<br />

À chaque connexion, le système liste les messages marqués non lus du serveur, dans<br />

l’ordre chronologique inverse.<br />

L’affichage du sujet et de l’expéditeur nécessitent un traitement préalable car les<br />

en-têtes peuvent être encodés, lorsque les données contiennent par exemple des<br />

accents. C’est le rôle de decode_header.<br />

381

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

Saved successfully!

Ooh no, something went wrong!