Bonjour A tous
Voici une fonction pour lire les mails des vos amis .
Je passe le tuto ou placé la programme (voir les TUTO précédents)
Pour lire les mails , il faudra dire : (lire les messages de ……)
les messages au format texte sont seulement lus , les autres sont ignorés
la fonction vous donne le nombres de message en attente et vous lira tous les mails de votre amis (uniquement au format texte)
Pour les photos envoyées depuis INMOOV la fonction vous averti qu une photo est en attente.
def liremail(destinataire):
try :
# creation d un dictionnaire des amis
dico = {"jean-pierre":'(FROM "lecagnois")',"colette":'(FROM "xxxxxxnette")', "robot":'(FROM "inmoov")'}
# message si pas trouver
if (dico.get(destinataire) == None):
print("Amis inconnu dans l annuaire")
talkBlocking("personne inconnu au bataillon")
else:
mail = imaplib.IMAP4_SSL('imap.orange.fr')
# imaplib module implements connection based sur protocol IMAPv4
mail.login('lecagnois@wanadoo.fr', 'xxxxxx')
mail.list()
mail.select('inbox') # Connecter a inbox.
(status,nbMessages) = mail.select('INBOX')
print("connecter inbox")
#Rechercher message dans expediteur
result, data = mail.uid('search', None, (dico.get(destinataire)))
#result, data = mail.uid('search', None, '(FROM "lecagnois")')
i = len(data[0].split()) # data[0] supprime espace
Totalmsg = re.findall('\d+', str(nbMessages))[0]
print (result + ' Nombre de messages = ' + str(Totalmsg))
talkBlocking("il y a au total "+str(Totalmsg)+ " messages dans ta boite mail ")
print("trouver : " +str(i))
talkBlocking("jai trouver " + str(i) + " message de " + destinataire )
for x in range(i):
latest_email_uid = data[0].split()[x] # ID unique étiquette sélectionnée
result, email_data = mail.uid('fetch', latest_email_uid, '(RFC822)')
# Récupérer le corps de courrier électronique pour l'ID donné
raw_email = email_data[0][1]
# boucle 1
raw_email_string = raw_email.decode('utf-8')
# Convertit d'octet en chaîne
email_message = email.message_from_string(raw_email_string)
#boucler à travers toutes les multiparties disponibles dans le mail
for part in email_message.walk():
if part.get_content_type() == "text/plain": # ignore html
body = part.get_payload(decode=True)
print(body.decode('utf-8'))
Mreponse = (body.decode('utf-8'))
talkBlocking("message " + str(x+1) +". "+ Mreponse)
if part.get_content_type() == "multipart/mixed" : # ignore piece jointe
body = part.get_payload(decode=False)
else:
continue
if i == 0 :
print("pas de messages")
talkBlocking("pas de message a bientot")
#fermeture IMAP
print ("deconnecter du serveur")
imaplib.IMAP4.close
imaplib.IMAP4.logout
except IOError:
talkBlocking("le serveur est hors service")
except OSError:
talkBlocking("oups il y a une erreur")
except ValueError:
talkBlocking("oups il y a une erreur ")
except:
print(sys.exc_info()[0])
raise
Voici le AIML
<category>
<pattern># LES MESSAGES DE *</pattern>
<template>
<oob>
<mrl>
<service>python</service>
<method>exec</method>
<param>liremail( "<star index="2"/>" )</param>
</mrl>
</oob>
</template>
</category>
<category>
<pattern># le message de *</pattern>
<template>
<srai># LES MESSAGES DE *</srai>
</template>
</category>
<category>
<pattern># les mails de *</pattern>
<template>
<srai># LES MESSAGES DE *</srai>
</template>
</category>
<category>
<pattern># le mail de *</pattern>
<template>
<srai># LES MESSAGES DE *</srai>
</template>
</category>
Lien gitHub
https://github.com/lecagnois/inmoov/blob/patch-6/InmoovScript/inmoovCustom/gestes.py
lien AIML
https://github.com/lecagnois/inmoov/blob/patch-6/InmoovScript/inmoovVocal/bots/fr/aiml/Ajpm.aiml
-
This topic was modified 7 years, 8 months ago by lecagnois.