Acessando Imap em C # [fechado]


112

Existe um método integrado para acessar um servidor Imap (com SSL) em C # ou existe uma boa biblioteca gratuita?



7
Não. O link que você postou está relacionado ao IMAP especificamente para o Gmail. Este post, entretanto, não é.

72
Por favor, tenha mais cuidado ao dizer / marcar perguntas como duplicatas. Estou cansado de ver "duplicado: [link] em todos os lugares. Muitas vezes os outros links não respondem o que o" Duplicador "quer saber de qualquer maneira, seja a mesma pergunta ou não!
βӔḺṪẶⱫŌŔ

7
Questão fechada, então não posso adicionar como resposta: github.com/jstedfast/MailKit parece ser uma boa opção e um projeto ativo.
Rory

4
Marcar perguntas úteis como não construtivas de fato não é construtivo ...
Robert J

Respostas:


90

Eu estive procurando por uma solução IMAP por um tempo agora, e depois de tentar algumas, estou indo com AE.Net.Mail .

Você pode baixar o código acessando a guia Código e clicando no pequeno ícone 'Download'. Como o autor não fornece nenhum download pré-compilado, você deve compilá-lo sozinho. (Eu acredito que você pode obtê-lo através do NuGet). Não há mais um .dll no bin / pasta.

Não há documentação, o que considero uma desvantagem, mas fui capaz de preparar isso olhando o código-fonte (yay para open source!) E usando o Intellisense. O código a seguir se conecta especificamente ao servidor IMAP do Gmail:

// Connect to the IMAP server. The 'true' parameter specifies to use SSL
// which is important (for Gmail at least)
ImapClient ic = new ImapClient("imap.gmail.com", "name@gmail.com", "pass",
                ImapClient.AuthMethods.Login, 993, true);
// Select a mailbox. Case-insensitive
ic.SelectMailbox("INBOX");
Console.WriteLine(ic.GetMessageCount());
// Get the first *11* messages. 0 is the first message;
// and it also includes the 10th message, which is really the eleventh ;)
// MailMessage represents, well, a message in your mailbox
MailMessage[] mm = ic.GetMessages(0, 10);
foreach (MailMessage m in mm)
{
    Console.WriteLine(m.Subject);
}
// Probably wiser to use a using statement
ic.Dispose();

Certifique-se de verificar a página do Github para a versão mais recente e alguns exemplos de código melhores.


1
Isso parece muito fácil para ser verdade lol. Eu vou dar uma olhada!
bendr

4
@jase - Você está certo! Não tenho certeza de qual é o problema exatamente (parece ser o arquivo de propriedades?), Mas consegui compilá-lo copiando todos os arquivos relevantes em um novo projeto de classe. Seja qual for o caso, eu construí as bibliotecas para você e, portanto, você pode adicioná-las como referências .dll ao seu projeto. dl.dropbox.com/u/8037514/AE.Net.Mail.zip Apenas para fins de isenção de responsabilidade, vem com todas as garantias e direitos autorais incluídos no projeto original e não sou responsável se ele explodir, etc. etc. sorte!
Dominic K

4
+1 Acabei de baixar e compilar o commit mais recente do AE.Net.Mail no VS2010 e funcionou perfeitamente. Tive uma experiência muito melhor do que com o ImapX, obrigado pela dica. O código aqui me deu um bom começo.
RedFilter

8
por que as pessoas escrevem coisas boas como essa e basicamente não incluem nenhuma documentação? Não entendo
Simon_Weaver

2
Funciona, mas em versões mais recentes o construtor deve ser semelhante a este: ImapClient ic = new ImapClient ("imap.gmail.com", "name@gmail.com", "pass", AuthMethods.Login, 993, true);
Ogglas

34

Na esperança de que seja útil para alguns, você pode querer dar uma olhada nisso:

S22.Imap

Embora existam algumas bibliotecas IMAP boas e bem documentadas para .NET disponíveis, nenhuma delas é gratuita para uso pessoal, muito menos para uso comercial ... e eu simplesmente não estava muito satisfeito com as alternativas gratuitas abandonadas que encontrei.

S22.Imap suporta notificações IMAP IDLE, bem como SSL e busca parcial de mensagens. Eu me esforcei para produzir documentação e mantê-la atualizada, porque com os projetos que encontrei, a documentação costumava ser esparsa ou inexistente.

Sinta-se à vontade para fazer uma experiência e me avise se tiver algum problema.


Tentei o AE.Net.Mail primeiro e descobri que o S22.Imap é melhor, tanto na documentação quanto nos recursos que eu precisava até agora.
angularsen

Gostei do conceito de S22.Imap. Mas o que estou faltando é o acesso via índice ou número da mensagem.
Tejasvi Hegde

300 Cheers for S22.Imap. Simples, eficiente e útil em cenários do mundo real. The .Search () i sbrilliant
Vishnoo Rath

Como posso manter a sincronização da minha caixa de correio com IMAP usando esta biblioteca?
JackXandar

1
Alguma idéia de por que eu receberia um InvalidCredentialsException com uma mensagem de "NÃO [WEBALERT algum url] Login da Web necessário" ao tentar fazer o login? IMAP está habilitado na conta do Gmail. Ideias?
Auri Rahimzadeh

19

Não há suporte do .NET framework para IMAP. Você precisará usar algum componente de terceiros.

Experimente https://www.limilabs.com/mail , é muito acessível e fácil de usar, também suporta SSL:

using(Imap imap = new Imap())
{
    imap.ConnectSSL("imap.company.com");
    imap.Login("user", "password");

    imap.SelectInbox();
    List<long> uids = imap.SearchFlag(Flag.Unseen);
    foreach (long uid in uids)
    {
        string eml = imap.GetMessageByUID(uid);
        IMail message = new MailBuilder()
            .CreateFromEml(eml);

        Console.WriteLine(message.Subject);
        Console.WriteLine(message.TextDataString);
    }
    imap.Close(true);
}

Observe que este é um produto comercial que criei.

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


3
Baixado e instalado e funcionando em alguns minutos :) Muito bom
Moulde

Ele suporta a passagem de um token usando oAuth 2 em vez de passagem de senha?
user1166905


2
Ótimo componente, funciona perfeitamente. Testei a versão de teste (quase totalmente funcional) por algumas semanas e comprei uma licença.
Alex

1
Este é um ótimo componente, de fato. Ao contrário de todas as coisas de código aberto que experimentamos, este está realmente vivo e atualizado (estou escrevendo isso em 2016). Obrigado @PawelLesnikowski PS. Não sou afiliado de forma alguma.
jazzcat

15

MailSystem.NET contém todas as suas necessidades para IMAP4. É gratuito e de código aberto.

(Estou envolvido no projeto)


2
o projeto está ativo ?? versão mais recente datada de: seg. 14 dez. 2009 às 9h00
Kiquenet

1
Não há muitos recursos a serem adicionados hoje, pois a maioria das necessidades já está coberta. Somente correções de bugs e pequenas melhorias são confirmadas quando são enviadas. Mas não são tantos, a biblioteca é muito robusta.

4
Este projeto parece estar morto. Não funciona com IMAP4 corretamente, sem atualizações e sem respostas dos autores
Denis Vuyka

6
@alhambraeidos e @Denis estão corretos. O projeto está praticamente morto. As amostras não são compiladas, fora da caixa, no VS 2008 ou 2010. Eu as converti em upconversion e tive que examinar 16 questões de referência. A documentação está desatualizada e a página do CodePlex permanece sem resposta para quaisquer problemas / comentários no ano passado ou mais. Desisti e acabei comprando Mail.dll (não, não sou afiliado a eles).
sohtimsso1970

2
projeto está praticamente morto, o IDLE não funciona corretamente mailsystem.codeplex.com/workitem/23586
Greg Dean

5

Tente usar a biblioteca: https://imapx.codeplex.com/

Essa biblioteca é gratuita, de código aberto e tem exemplo neste: https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox


Para sua informação: imapx não parece ser compatível com IDLE
Greg Dean

ImapX tem suporte para a extensão IDLE agora.
Pavel Azanov

esta biblioteca, na minha experiência, é significativamente mais lenta do que AE.Net.Mail - isso não faz nenhum sentido, mas esteja avisado!
Simon_Weaver

1
Esta biblioteca contém os principais bugs (v2.0.0.18).
David

2

Eu não tentei sozinho, mas esta é uma biblioteca gratuita que você pode experimentar (não tenho certeza sobre a parte SSL desta aqui):

http://www.codeproject.com/KB/IP/imaplibrary.aspx

Além disso, existe o xemail, que possui parâmetros para SSL:

http://xemail-net.sourceforge.net/

[EDITAR] Se você (ou o cliente) tem dinheiro para um cliente de e-mail profissional, este tópico tem algumas boas recomendações:

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


a Imaplibrary em codeproject é o que eu estava usando, mas não tem a funcionalidade necessária Ill checkout xemail
UnkwnTech


Mudei o link, obrigado por me avisar.
Espo

REE: codeproject.com/KB/IP/imaplibrary.aspx em sua resposta; É muito legal. Tenho usado desde a semana passada para um cliente de e-mail e não tive problemas com ele.
βӔḺṪẶⱫŌŔ
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.