Autor Tópico: Dúvidas em script POP/IMAP  (Lida 996 vezes)

Offline los5884

  • void
  • *
  • Mensagens: 13
Re: Dúvidas em script POP/IMAP
« Responder #15 em: 07 de Julho de 2009, 03:59 »
Newbeen, o código do IMAP não esta a dar mas deixa estar vou ver se esta tudo bem configurado com o programa e vou tentar resolver o problema.

Offline newbeen

  • Try-Catch User
  • ***
  • Mensagens: 338
    • O meu blog
Re: Dúvidas em script POP/IMAP
« Responder #16 em: 07 de Julho de 2009, 19:41 »
o programa nao funciona isso nao ajuda muito poem aqui o Traceback e talvez eu te consiga ajudar

Offline los5884

  • void
  • *
  • Mensagens: 13
Re: Dúvidas em script POP/IMAP
« Responder #17 em: 08 de Julho de 2009, 02:42 »
o programa nao funciona isso nao ajuda muito poem aqui o Traceback e talvez eu te consiga ajudar


o erro que dá e o seguinte

Código (Python): [Seleccione]
Traceback (most recent call last):
  File "C:\Python26\lib\threading.py", line 524, in __bootstrap_inner
    self.run()
  File "C:\Python26\lib\threading.py", line 479, in run
    self.__target(*self.__args, **self.__kwargs)
  File "D:\My Documents\School\2008-2009\Projecto\Codigo\ProgramaIMAP.py", line 38, in getIMAP
    Mmail_server = imaplib.IMAP4()
  File "C:\Python26\lib\imaplib.py", line 163, in __init__
    self.open(host, port)
  File "C:\Python26\lib\imaplib.py", line 230, in open
    self.sock.connect((host, port))
  File "<string>", line 1, in connect
error: [Errno 10051] Uma operação de socket foi tentada numa rede inacessível

Offline newbeen

  • Try-Catch User
  • ***
  • Mensagens: 338
    • O meu blog
Re: Dúvidas em script POP/IMAP
« Responder #18 em: 08 de Julho de 2009, 13:25 »
Pensa um bocado lê a mensagem de erro e tenta ver qual é o problema...
Se ele te diz que nao consegue abrir o socket a primeira coisa que deves tentar é fazer um ping ao servidor para ver se ele esta activo a seguir verifica a tua firewall e ve se ela nao esta a bloquear o teu programa.

PS: nao uses localhost,  isso por vezes trás problemas, tentar usar o ip, 127.0.0.1

Offline los5884

  • void
  • *
  • Mensagens: 13
Re: Dúvidas em script POP/IMAP
« Responder #19 em: 08 de Julho de 2009, 18:15 »
Citar
Pensa um bocado lê a mensagem de erro e tenta ver qual é o problema...
Se ele te diz que nao consegue abrir o socket a primeira coisa que deves tentar é fazer um ping ao servidor para ver se ele esta activo a seguir verifica a tua firewall e ve se ela nao esta a bloquear o teu programa.

PS: nao uses localhost,  isso por vezes trás problemas, tentar usar o ip, 127.0.0.1


Já pensei nisso e já tentei isso. É por isso que digo que deve ser o meu programa (configuração) que não deve estar bem feito. Porque eu consigo ligar ao POP nesse código, e o erro só dá depois de meter os erros do IMAP


Já encontrei uma solução. Não sei se é a mais “correcta” mas esta a dar

Código (Python): [Seleccione]
import poplib, imaplib, time, threading

class mail_connect:

    def __init__(self, puser, ppasswd, pserver, iuser, ipasswd, iserver):

        self.login={"imap":{"user":iuser, "password":ipasswd, "server":iserver},
                    "pop":{"user":puser, "password":ppasswd, "server":pserver}}
       

        th_pop=threading.Thread(target=self.getPOP) #define a thread
        th_imap=threading.Thread(target=self.getIMAP)
        th_pop.start()  #inicia a thread
        th_imap.start()
       
           
    def getPOP(self):

        self.e_mails=[] #array auxiliar
        self.numMessages=0 #inicia a variavel
       
        while 1:  #Loop infinito
            mail_server = poplib.POP3(self.login["pop"]["server"]) #estabelece a ligacao ao servidor
            mail_server.user(self.login["pop"]["user"])             #
            mail_server.pass_(self.login["pop"]["password"])          # faz a autenticacao
            numMessages = len(mail_server.list()[1]) #obtem o numero de msg no servidor
            for i in range(numMessages):            #Primeiro loop nas mensagens
                print "A processar %i mails de %i\n"%(i,numMessages)
                for j in mail_server.retr(i+1)[1]: #obtem o conteudo das mensagens
                    self.e_mails.append(j)          #Armazena o conteudo num array
            print self.e_mails                      #Imprime todas as mensagens
            time.sleep(3)                           #Espera 3 segundos para verificar outra vez
            print "A verificar novos email pop\n"


    def getIMAP(self):
       
                        mail_server = imaplib.IMAP4(self.login["imap"]["server"])
                        mail_server.login(self.login["imap"]["user"], self.login["imap"]["password"])
                        mail_server.select()
                        typ, data = mail_server.search(None, 'ALL')
                        for num in data[0].split():
                                typ, data = mail_server.fetch(num, '(RFC822)')
                                print 'Message %s\n%s\n' % (num, data[0][1])
                        mail_server.close()
                        mail_server.logout()

           


if __name__ == '__main__':

    print "Please input Pop Settings\n"
    puser=raw_input("Please input user: ")
    ppasswd=raw_input("Please input passwd: ")
    pserver=raw_input("Please input server: ")

    print "\nPlease input IMAP Settings\n"
    iuser=raw_input("Please input user: ")
    ipasswd=raw_input("Please input passwd: ")
    iserver=raw_input("Please input server: ")

    mail_connect(puser, ppasswd, pserver, iuser, ipasswd, iserver)
« Última modificação: 10 de Julho de 2009, 16:21 por los5884 »