Recomendações para um componente .NET para acessar uma caixa de entrada de e-mail [fechado]

StackOverflow https://stackoverflow.com/questions/18006

  •  09-06-2019
  •  | 
  •  

Pergunta

Pediram-me para escrever um serviço do Windows em C# para monitorar periodicamente uma caixa de entrada de e-mail e inserir os detalhes de quaisquer mensagens recebidas em uma tabela de banco de dados.

Meu instinto é fazer isso via POP3 e, com certeza, pesquisar no Google por "componente .NET POP3" produz inúmeros (ok, 146.000) resultados.

Alguém já fez algo semelhante antes e você pode recomendar um componente decente que não vai quebrar o banco (algumas centenas de dólares no máximo)?

Haveria algum benefício em usar IMAP em vez de POP3?

Foi útil?

Solução

Eu recomendo Chilkat.Eles têm componentes bastante estáveis, e você pode obter seu componente de e-mail por apenas US$ 99 para um único desenvolvedor.Pessoalmente, acho que ir com o pacote completo de componentes é um negócio melhor, pois custa apenas US$ 289 e vem com muitos componentes úteis.Não sou afiliado a eles de forma alguma, embora provavelmente pareça que sou.

Outras dicas

Com o protocolo IMAP você pode acessar subpastas, e definir status da mensagem (visto/invisível), você também pode usar PARADO recurso para notificações instantâneas.

Mail.dll inclui POP3, IMAP, SMTP componentes com SSL suporte e analisador MIME poderoso:

using(Imap imap = new Imap())
{
    imap.Connect("imap.server.com");    // or ConnectSSL for SSL
    imap.Login("user", "password");

    imap.SelectInbox();
    List<long> uids = imap.Search(Flag.Unseen);
    foreach (long uid in uids)
    {
        IMail mail = new MailBuilder()
            .CreateFromEml(imap.GetMessageByUID(uid));
        Console.WriteLine(mail.Subject);
    }
    imap.Close();
}

Observe que este é um produto comercial que criei.

Você pode baixá-lo em https://www.limilabs.com/mail

Eu uso o SharpMimeTools gratuito e de código aberto em meu aplicativo, BugTracker.NET.Tem sido muito confiável:

http://anmar.eu.org/projects/sharpmimetools/

Veja os arquivos POP3Client.cs, POP3Main.cs e insert_bug.aspx

eu recomendaria Intelecto Avançado.Existem componentes para POP3 e IMAP (ASPNetPOP3 e ASPNetIMAP).Suporte de boa qualidade e muito ágil - lembro-me de receber respostas às minhas perguntas em um fim de semana.

Você pode querer verificar nosso Componente Rebex Mail.Inclui IMAP, SMTP, POP3 protocolos e e S/MIME analisador.

O POP3 não tem um conceito de mensagens 'não lidas' ou pesquisa de mensagens que correspondam a critérios específicos. POP3 simplesmente retorna todas as mensagens em sua caixa de entrada.

Usando IMAP você pode instruir o servidor IMAP a enviar apenas mensagens não lidas, mensagens que chegaram desde o horário especificado, mensagens de um usuário específico, etc.Você não precisa baixar tudo para o cliente e fazer a filtragem lá.

O código a seguir mostra como baixar mensagens não lidas do Imap servidor usando Rebex.Net.Imap aula.

// create client, connect and log in 
Imap client = new Imap();
client.Connect("imap.example.org");
client.Login("username", "password");

// select folder 
client.SelectFolder("Inbox");

// get message list - envelope headers 
ImapMessageCollection messages = client.Search
  (
     ImapSearchParameter.HasFlagsNoneOf(ImapMessageFlags.Seen)
  ); 

// display info about each message 
Console.WriteLine("UID | From | To | Subject");
foreach (ImapMessageInfo message in messages)
{
    Console.WriteLine(
        "{0} | {1} | {2} | {3}",
        message.UniqueId,
        message.From,
        message.To,
        message.Subject);
}

// disconnect 
client.Disconnect();

Segue um exemplo de combinação de vários critérios de pesquisa.Isso retornará mensagens do último ano maiores que 100 KB.

ImapMessageCollection messages = client.Search
  (
     ImapSearchParameter.Arrived(DateTime.Now.AddYears(-1), DateTime.Now),
     ImapSearchParameter.Size(1024 * 100, Int32.MaxValue)
  ); 

Você pode baixar o teste em rebex.net/secure-mail.net/download.aspx

Se você usar uma implementação POP3 de código aberto ou algo disponível gratuitamente, você terá acesso para modificar o código e expandi-lo na direção necessária.Um rápido Google resultou neste C# Código POP3 do Code Project para recuperar mensagens.

Há algo de fortalecedor em criar o seu próprio, ou pelo menos estendê-lo.

alt text

Lumisoft é de código aberto e inclui clientes IMAP e POP (entre outras coisas).Eu os uso há anos sem problemas.

E o WCF?É grátis.

Se você tiver um servidor Exchange:http://msdn.microsoft.com/en-us/library/bb397812.aspx

um exemplo para pop3:http://bartdesmet.net/blogs/bart/archive/2006/09/13/4417.aspx

C#Mail custa US$ 0, mas também é licenciado pela GNU GPL, então certifique-se de que está tudo bem.

Você pode fazer isso usando objetos MailBee.NET: http://www.afterlogic.com/products/net-email-components

Embora eu recomende usar o IMAP, especialmente porque ele oferece suporte IDLE já mencionado aqui, você pode fazer o mesmo com o POP3.Há uma breve descrição de ambas as abordagens e um exemplo completo do cenário IMAP IDLE:

http://www.afterlogic.com/wiki/Getting_notifications_about_new_messages_in_mailbox_%28IMAP_IDLE_and_polling%29

Observe que sou afiliado à AfterLogic e terei prazer em ajudá-lo se precisar de ajuda, verifique a opção Solicitar suporte em nosso site.

IMAPX2 é o melhor.Usando IMAP você pode controlar as pastas em um servidor de e-mail, algo que você não conseguiria fazer usando POP.IMAPX é um código-fonte aberto que você pode consultar e de uso gratuito.

IMAPX é simples e confiável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top