Recomendações para um componente .NET para acessar uma caixa de entrada de e-mail [fechado]
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?
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.
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:
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.