Viewing 0 reply threads
  • Author
    Posts
    • #8155
      lecagnois
      Participant

      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 5 years, 8 months ago by lecagnois.
Viewing 0 reply threads
  • You must be logged in to reply to this topic.