#!/usr/bin/python
# -*- coding: UTF-8 -*-


"""
    Code pour creer un client simple de lecture de contenu de boites
    d'emails.
"""


###############################################################################
# Informations de versions
###############################################################################
__project__   = 'Formation Python'
__author__    = 'Simon CHOLLET (s.chollet@llr.in2p3.fr)'
__modifiers__ = ''
__date__      = '08/09/2011'
__version__   = '1.0'


###############################################################################
# Importations
###############################################################################
# Importation de la partie IMAP4
import imaplib


###############################################################################
# Definitions specifiques
###############################################################################
# True si connexion avec SSL, False si connexion standard
IMAP_SERVER_SSL = False

# L'adresse du serveur IMAP
IMAP_SERVER_ADDRESS = 'imap.free.fr'

# Le port de communication a utiliser
#  993 pour un serveur IMAPS
#  143 pour un serveur IMAP
IMAPS_SERVER_PORT = 993
IMAP_SERVER_PORT  = 143

# Le login de l'utilisateur
IMAP_SERVER_LOGIN = '****.****@free.fr'

# Le mot de passe de l'utilisateur
IMAP_SERVER_PASSWORD = '*****'


###############################################################################
# Declaration des classes / fonctions
###############################################################################


#
#
# Fonction appelee lors de la demande
# d'execution de la classe/module
if __name__ == "__main__":

    # Ouverture de la connexion vers le serveur EMAIL
    # Utilisation de SSL pour les dialogues, port = 993
    if IMAP_SERVER_SSL:
        imap_serv = imaplib.IMAP4_SSL(IMAP_SERVER_ADDRESS, IMAPS_SERVER_PORT)
    else:
        imap_serv = imaplib.IMAP4(IMAP_SERVER_ADDRESS, IMAP_SERVER_PORT)


    # On s'identifie sur le serveur
    imap_serv.login(IMAP_SERVER_LOGIN, IMAP_SERVER_PASSWORD)

    # Choix de la boite de reception :
    # Parametre vide = 'INBOX' par defaut 
    imap_serv.select()

    # Affichage du nombre de messages
    # Nous passons par la recherche dans
    # la boite de reception de tous les messages
    type, data = imap_serv.search(None, 'ALL')
    nb_msg = len(data[0].split())
    print "  > Nombre de messages : %d" % (nb_msg)

    # Affichage des messages trouves
    for num in data[0].split():
        type, data = imap_serv.fetch(num, '(RFC822)')
        print '--------------------------------------------------\n'
        print ' --> Message %s\n' % (num)
        print '--------------------------------------------------\n'
        print '%s' % (data[0][1])
        print '--------------------------------------------------\n'

    # Deconnexion du serveur IMAP4
    imap_serv.close()
    imap_serv.logout()
