none
Como pegar emails da pasta de spam?

    Discussão Geral

  • 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

    sábado, 10 de janeiro de 2009 17:54

Todas as Respostas

  • Alguem?

    terça-feira, 13 de janeiro de 2009 14:09
  • 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
    quinta-feira, 15 de janeiro de 2009 12:35
    Moderador
  • 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.

    quinta-feira, 15 de janeiro de 2009 16:17
  • Alguém?

    sábado, 17 de janeiro de 2009 20:35
  • 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




    segunda-feira, 19 de janeiro de 2009 12:30
    Moderador
  • 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..

    terça-feira, 20 de janeiro de 2009 13:22
  • Esqueci de dizer, testei tbm com o gmail..

     

    abraço

    terça-feira, 20 de janeiro de 2009 13:33
  • 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
    terça-feira, 20 de janeiro de 2009 17:05
    Moderador
  • 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

    quinta-feira, 22 de janeiro de 2009 22:09
  • Up

    domingo, 25 de janeiro de 2009 22:23
  • Olá,

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

    []'s
    segunda-feira, 26 de janeiro de 2009 12:39
    Moderador
  • 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

    segunda-feira, 26 de janeiro de 2009 16:22
  • 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
    terça-feira, 27 de janeiro de 2009 11:17
    Moderador