none
Como pegar emails da pasta de spam?

    General discussion

  • Olá pessoal!

     

    A minha aplicação verifica a chegada de novos emails. Sendo que no meu servidor, 90% das msgs que chegam vao pra pasta de spam. Assim eu só consigo acessar a pasta de entrada (pelo POP3).

     

    Teria um jeito de acessar a pasta de spam, saber quantas mensagens nao lidas existem lá e pegar certa mensagem atraves de um index? por exemplo: existem 6 mensagens nao lidas, ai eu boto pra acessar a mensagem 3.

     

    Há como fazer isso?

    Estive vendo sobre Imap. Mas não sei como usar pq nao conheço esses metodos de email. Se alguem tiver uma classe ai pra me ajudar...

     

    Obrigado

    Saturday, January 10, 2009 5:54 PM

All replies

  • Alguem?

    Tuesday, January 13, 2009 2:09 PM
  • Olá,

    O protocolo POP3 não suporta acesso a outras pastas, somente a padrão, que no caso é a "Caixa de Entrada" (Inbox).
    Se você necessita navegar pelas pastas, ou mesmo, gerência-las terá de utilizar o protocolo IMAP v4.

    Biblioteca recomendada Koolwired.Imap


    []'s
    Thursday, January 15, 2009 12:35 PM
  • Olá Gabriel.

    Eu tentei fazer assim:

     

    Code Snippet

    using Koolwired.Imap;

    public class IMap

    {

    int TotalRecords = 0;

    ImapConnect connection = new ImapConnect("mail.divulguexpress.com");

    public string[] GetGoogleMessage(string User, string Pass)

    {

    ImapCommand command = new ImapCommand(connection);

    ImapAuthenticate authenticate = new ImapAuthenticate(connection, User, Pass);

    connection.Open();

    authenticate.Login();

    ImapMailbox mailbox = command.Select("INBOX");

    //TotalRecords = mailbox.Exist; // <<

    mailbox = command.Fetch(mailbox); // <<

    authenticate.Logout();

    connection.Close();

    int MsgCount = mailbox.Messages.Count;

    string[] MessagesBody = new string[MsgCount];

    for (int i = 0; i < MsgCount; i++)

    {

    MessagesBody[i] = mailbox.Messages[i].BodyParts.ToString();

    }

    return MessagesBody;

    }

    }

     

     

     

    acho que nao é bem um erro, pq nao aparece nada, é demorou tanto tempo pra nao me dar resposta, que ai botei pause na execução pelo VS2008 pra ver aonde ele tava parado. ae apareceu aquela linha verde com uma seinha verde no lado informando que aquele seria o próximo ponto a executar, só que botei o mouse em cima, ae apareceu varios simbolos vermelhos com uma exclamação que tinham todos a seguinte descrição: "Cannot evaluate expression because a native frame is on top of the call stack."

    entao botei play de novo, esperei uns 1 minuto e botei pause outra vez pra ver se ele já tinha saido dali, mas continuou no mesmo lugar..

     

    tem alguma ideia do que pode ser?

     

    é assim que eu chamo essa classe:

     

    Code Snippet

    string[] Messages = IMap.GetGoogleMessage("slave_yozmchilhk@divulguexpress.com", "rootter");

     

     

    Aguardo resposta.

    Obrigado.

    Thursday, January 15, 2009 4:17 PM
  • Alguém?

    Saturday, January 17, 2009 8:35 PM
  • Olá,

    Caro amigo, o seu código é totalmente funcional. Testei em um servidor aqui da empresa, Exchange 2003 e funcionou perfeito.

    Minha sugestão:
    - Testar com outra conta de email.
    - Testa em outro servidor.
    Caso de certo, ligue para o suporte do seu servidor e confirme com eles se os serviços para acesso IMAP estão rodando.

    []'s




    Monday, January 19, 2009 12:30 PM
  • Po.. eu fiz uns testes aqui pra saber aonde estava o prob.. e vi que isso só acontece quando há algum email na caixa que estou tentando acessar.. pois, quando a caixa está vazia, isso nao aontece, ele roda direitinho...pelo o que eu vi, ele tem aquele comando "Fetch()" parece que nessa parte ele clona todas as mensagens da pasta remota pra dentro do programa.. aí que da o erro.

     

    sabe como eu fazer sem usar akele codigo acima?

     

    aqui eu uso vista ultimate 64.. isso tem algo haver com o problema?

     

    Obrigado..

    Tuesday, January 20, 2009 1:22 PM
  • Esqueci de dizer, testei tbm com o gmail..

     

    abraço

    Tuesday, January 20, 2009 1:33 PM
  • Olá,

    Quanto a ser Windows Vista Ultimate x64, não deve ser esse o problema.

    Outro projeto ainda desenvolvimento
    InterIMAP, não há nenhum que seja perfeito e completo que não seja proprietário.
    Baixe o código fonte e tente utilizar e se você gostar quem sabe você não passa a ajudar no projeto Wink.

    []'s
    Tuesday, January 20, 2009 5:05 PM
  • Olá Gabriel..

     

    Estive olhando esse componente.. ele é realmente muito bom e aparentemente melhor que o outro tbm..

    tentei incorporar ele no meu projeto.. mas eu nao soube como usá-lo.. eu tentei de várias formas.. eu até consegui me conectar a caixa de emai mas nao consegui ler nenhuma qmensagem que tinha dentro da caixa... só puder fazer tipo uma listagem.. aonde podia ver a quantidade de mensagens.. essas coisas basicas.. mensagem msm eu nao consegui pegar.. tem como me dar uma luz?

     

    Obrigado

    Thursday, January 22, 2009 10:09 PM
  • Up

    Sunday, January 25, 2009 10:23 PM
  • Olá,

    Por favor, poste o seu código criado, para tentar obter as mensagens do servidor?

    []'s
    Monday, January 26, 2009 12:39 PM
  • Olá..

     

    Eu consegui pegar as mensagens.. mas agora surgiu um outro problema bem estranho.. é que agora só consigo pegar o texto das mensagens de qualquer email que nao for do google.. e eu preciso muito disso.. eu só to fazendo tudo pelo por querer pegar as msgs do google..

     

    o codigo é esse:

     

    Code Snippet

    using InterIMAP;

     

    public class IMap

    {

    public string[] GetGoogleMessage(string User, string Pass)

    {

    string sHost = "mail.divulguexpress.com";

    bool bSSL = false;

    bool bAutoLog = true;

     

    IMAPConfig config = new IMAPConfig(sHost, User, Pass, bSSL, bAutoLog, "");

    IMAPClient client = new IMAPClient(config, null, 5);

    IMAPFolder f = client.Folders["inbox"];

     

    string[] Messages = new string[f.Messages.Count];

     

    for (int i = 0; i < f.Messages.Count; i++)

    {

    Messages[i] = f.Messages[i].GetXML();

    }

     

    return Messages;

    }

    }

     

    esse código funciona pra qualquer mensagem que nao seja do google.. tente acessar com o seguinte user e senha:

     

    Code Snippet

    ("slave_yozmchilhk@divulguexpress.com", "rootter")

     

     

    o codigo acima só vai retornar a msg  que nao é do google =/

     

    o que devo fazer?

     

    obrigado

    Monday, January 26, 2009 4:22 PM
  • Olá,

    Dando uma olhada no código, consegui descobri onde está o problema. O problema está na função InterIMAP.Synchronous.IMAP.ProcessBodyContent(IMAPMessage msg), após o comentário: "// now we are in the section body. continue until we hit the next section".

    Minha sugestão é que você entre em contato com o equipe da biblioteca para que ele solucione este problema da melhor forma possível e assim você estará ajudando-os.

    Issue Tracker do projeto
    Blog do autor

    []'s
    Tuesday, January 27, 2009 11:17 AM