Finalmente con la ayuda del profesor pudimos recibir los correos de forma correcta.
listaCorreos=Listbox(ventanaPrincipal,width=152, height=25,relief=RIDGE)
listaCorreos.place(x=20, y=180)
def CurSelet(evt):
try:
ind = listaCorreos.curselection()
if listaCorreos.curselection() != ():
sel = listaCorreos.get(ind)
verCorreos(persona, lineas[0],listaBody[ind[0]], mitexto)
except:
print ""
listaCorreos.bind('<<ListboxSelect>>',CurSelet)
conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
conn.login("progmoz@gmail.com", "progmoz2014")
conn.select()
listaPersonas=[]
listaAsuntos=[]
listaBody=[]
typ, data = conn.search(None, 'UNSEEN')
try:
for num in data[0].split():
typ, msg_data = conn.fetch(num, '(RFC822)')
for response_part in msg_data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1])
subject=msg['subject']
persona=msg['from']
payload=msg.get_payload()
body=extract_body(payload)
listaBody.append(body)
correo=open('correo.txt','w').write(persona)
listaPersonas.append(persona)
correo=open('correo.txt','r')
lineas=correo.readlines()
persona1=lineas[0]
correo=open('correo.txt','w').write(subject)
listaAsuntos.append(subject)
correo=open('correo.txt','r')
lineas=correo.readlines()
listaCorreos.insert(1,"De: "+persona1+ " Asunto: "+ lineas[0])
listaCorreos.place(x=20, y=180)
typ, response = conn.store(num, '+FLAGS', r'(\Seen)')
finally:
try:
conn.close()
except:
pass
conn.logout()
Se necesita saber la posición de los correos recibidos en el listbox, para eso se creó el índice, y así ir printando el respectivo cuerpo de los correos.
miércoles, 1 de octubre de 2014
martes, 30 de septiembre de 2014
Recibiendo correos!
Hoy empezamos a descubrir cómo recibir los correos. Tenemos problemas con el asunto y el cuerpo de los correos. Necesitamos que se inserten todos los elementos en un listbox para que puedan ser seleccionables. Sin embargo se combinan los cuerpos de los correos. El día de mañana le vamos a pedir ayuda al profesor,
martes, 23 de septiembre de 2014
Tenemos los módulos!!
Hoy conseguimos que se instalaran los módulos de dropbox. Ahora que nuestra función sirve pudimos ir implementándola a la interfaz. Resultó ser un poco complicado, pero se logró definiendo varias funciones y asignándolas en botones de la interfaz.
IniciarSesion=Button(ventanaInicio,image=Dropbox,relief=RIDGE,command=vincularDropbox)
IniciarSesion=Button(ventanaInicio,image=Dropbox,relief=RIDGE,command=vincularDropbox)
lunes, 22 de septiembre de 2014
Iniciando la interfaz
Hoy empezamos la interfaz con el ya conocido por nosotros tkinter. Utilizando variables de tipo StringVar pudimos tomar la información escrita en los Entry para verificar que todos los datos fueran correctos.
strUsuario=StringVar()
CORREO=Entry(ventanaInicio,textvar=strUsuario,width=30,bg='lightyellow',bd=3).place(x=60,y=30)
Sin embargo aún no podemos avanzar con el trabajo porque todavía no tenemos instalados los módulos necesarios.
strUsuario=StringVar()
CORREO=Entry(ventanaInicio,textvar=strUsuario,width=30,bg='lightyellow',bd=3).place(x=60,y=30)
Sin embargo aún no podemos avanzar con el trabajo porque todavía no tenemos instalados los módulos necesarios.
domingo, 21 de septiembre de 2014
Encriptando y desencriptando correos electrónicos.
Hoy descubrimos como encriptar y desencriptar correos. Y, al igual que la vez anterior, resultó ser más sencillo de lo esperado, con el siguiente código. (Tomado de https://launchkey.com/docs/api/encryption)
Para encriptar:
Para encriptar:
def encrypt_RSA(public_key_loc, message):from Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_OAEPkey = open(public_key_loc, "r").read()rsakey = RSA.importKey(key)rsakey = PKCS1_OAEP.new(rsakey)encrypted = rsakey.encrypt(message)return encrypted.encode('base64')Para desencriptar:def decrypt_RSA(private_key_loc, package):from Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_OAEPfrom base64 import b64decodekey = open(private_key_loc, "r").read()rsakey = RSA.importKey(key)rsakey = PKCS1_OAEP.new(rsakey)decrypted = rsakey.decrypt(b64decode(package))return decrypted
viernes, 19 de septiembre de 2014
Descubriendo la vinculación de python con dropbox
Hoy empezamos la segunda tarea programada del semestre. Al principio pensamos que iba a ser muy difícil por el hecho de que tenemos que vincular nuestro programa de python con dropbox, pero no dimos cuenta que al parecer es más sencillo de lo esperado. Encontramos el siguiente código que nos puede ayudar mucho:
import dropbox
#from Dropbox import client
# Get your app key and secret from the Dropbox developer website
app_key = 'xxxxxxxxxxxxxx'
app_secret = 'xxxxxxxxxxx'
flow = dropbox.client.DropboxOAuth2FlowNoRedirect(app_key, app_secret)
# Have the user sign in and authorize this token
authorize_url = flow.start()
print '1. Go to: ' + authorize_url
print '2. Click "Allow" (you might have to log in first)'
print '3. Copy the authorization code.'
code = raw_input("Enter the authorization code here: ").strip()
# This will fail if the user enters an invalid authorization code
access_token, user_id = flow.finish(code)
client = dropbox.client.DropboxClient(access_token)
print 'linked account: ', client.account_info()
f = open('working-draft.txt', 'rb')
response = client.put_file('/magnum-opus.txt', f)
print 'uploaded: ', response
folder_metadata = client.metadata('/')
print 'metadata: ', folder_metadata
f, metadata = client.get_file_and_metadata('/magnum-opus.txt')
out = open('magnum-opus.txt', 'wb')
out.write(f.read())
out.close()
print metadata
Las llaves públicas y privadas se consiguen creando una aplicación en dropbox (que es muy sencillo), sin embargo tenemos que instalar los módulos que necesitamos para la librería dropbox con el powerShell.
import dropbox
#from Dropbox import client
# Get your app key and secret from the Dropbox developer website
app_key = 'xxxxxxxxxxxxxx'
app_secret = 'xxxxxxxxxxx'
flow = dropbox.client.DropboxOAuth2FlowNoRedirect(app_key, app_secret)
# Have the user sign in and authorize this token
authorize_url = flow.start()
print '1. Go to: ' + authorize_url
print '2. Click "Allow" (you might have to log in first)'
print '3. Copy the authorization code.'
code = raw_input("Enter the authorization code here: ").strip()
# This will fail if the user enters an invalid authorization code
access_token, user_id = flow.finish(code)
client = dropbox.client.DropboxClient(access_token)
print 'linked account: ', client.account_info()
f = open('working-draft.txt', 'rb')
response = client.put_file('/magnum-opus.txt', f)
print 'uploaded: ', response
folder_metadata = client.metadata('/')
print 'metadata: ', folder_metadata
f, metadata = client.get_file_and_metadata('/magnum-opus.txt')
out = open('magnum-opus.txt', 'wb')
out.write(f.read())
out.close()
print metadata
Las llaves públicas y privadas se consiguen creando una aplicación en dropbox (que es muy sencillo), sin embargo tenemos que instalar los módulos que necesitamos para la librería dropbox con el powerShell.
Suscribirse a:
Entradas (Atom)