C # 'da Imap'e erişim [kapalı]


112

C #'da bir Imap sunucusuna (SSL ile) erişmek için yerleşik bir yöntem var mı yoksa iyi bir ücretsiz kitaplık var mı?



7
Hayır! Gönderdiğiniz bağlantı, özellikle Gmail için IMAP ile ilgilidir. Ancak bu gönderi değil.

72
Lütfen soruları kopya olarak söylerken / işaretlerken daha dikkatli olun. Her yerde "yinelenen: [bağlantı] görmekten bıktım. Aynı soru olsa da olmasa da, diğer bağlantılar çoğu zaman"
Yineleyici

7
Soru kapandı, bu yüzden bunu yanıt olarak ekleyemiyorum: github.com/jstedfast/MailKit iyi bir seçenek ve aktif bir proje gibi görünüyor.
Rory

4
Yararlı soruları yapıcı değil olarak işaretlemek aslında yapıcı değildir ...
Robert J

Yanıtlar:


90

Bir süredir IMAP çözümü arıyordum ve epeyce denedikten sonra AE.Net.Mail ile gidiyorum .

Kodu, Kod sekmesine gidip küçük 'İndir' simgesine tıklayarak indirebilirsiniz. Yazar önceden oluşturulmuş herhangi bir indirme sağlamadığından, onu kendiniz derlemelisiniz. (Yine de NuGet aracılığıyla alabileceğinize inanıyorum). Artık bin / klasörde .dll yok.

Olumsuz olduğunu düşündüğüm bir belge yok, ancak bunu kaynak koduna bakarak (açık kaynak için yay!) Ve Intellisense kullanarak kırbaçlamayı başardım. Aşağıdaki kod, özellikle Gmail'in IMAP sunucusuna bağlanır:

// 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();

En yeni sürüm ve bazı daha iyi kod örnekleri için Github sayfasını kontrol ettiğinizden emin olun .


1
Bu gerçek olamayacak kadar kolay görünüyor lol. Kontrol edeceğim!
bendr

4
@jase - Haklısın! Sorunun tam olarak ne olduğundan emin değilim (özellikler dosyası gibi görünüyor?), Ancak tüm ilgili dosyaları yeni bir sınıf projesine kopyalayarak derlemeyi başardım. Durum ne olursa olsun, kütüphaneleri sizin için oluşturdum ve böylece onları projenize .dll referansları olarak ekleyebilirsiniz. dl.dropbox.com/u/8037514/AE.Net.Mail.zip Bir sorumluluk reddi olarak bu, orijinal projenin getirdiği garantiler ve telif haklarıyla birlikte gelir ve patlarsa vb. sorumlu değilim. şans!
Dominic K

4
+1 AE.Net.Mail'in VS2010'daki en son kaydını indirip derledim ve mükemmel çalıştı. Ben vardı çok ipucu için daha iyi ImapX ile daha tecrübe sayesinde. Kod burada bana iyi bir sıçrama tahtası verdi.
RedFilter

8
Neden insanlar gidip böyle harika şeyler yazıyor ve sonra temelde hiçbir belge içermiyor? Anlamıyorum
Simon_Weaver

2
Çalışır, ancak daha yeni sürümlerde kurucu şu şekilde görünmelidir: ImapClient ic = new ImapClient ("imap.gmail.com", "name@gmail.com", "pass", AuthMethods.Login, 993, true);
Ogglas

34

Bazıları için faydalı olacağı umuduyla, benim adımıma bir göz atmak isteyebilirsiniz:

S22.Imap

NET için birkaç iyi ve iyi belgelenmiş IMAP kitaplığı mevcut olsa da, ticari kullanım bir yana, bunların hiçbiri kişisel için ücretsiz değil ... ve bulduğum çoğunlukla terk edilmiş ücretsiz alternatiflerden pek memnun değildim.

S22.Imap, IMAP IDLE bildirimlerinin yanı sıra SSL ve kısmi mesaj getirmeyi de destekler. Dokümantasyon üretmek ve güncel tutmak için biraz çaba sarf ettim , çünkü bulduğum projelerde dokümantasyon genellikle seyrek ya da hiç yoktu.

Deneyin ve herhangi bir sorunla karşılaşırsanız bana bildirin!


Önce AE.Net.Mail'i denedim ve S22.Imap'in hem dokümantasyon hem de şimdiye kadar ihtiyaç duyduğum özellikler açısından daha iyi olduğunu buldum.
angularsen

S22.Imap konseptini beğendim. Ama eksik olan şey, indeks veya mesaj numarası yoluyla erişim.
Tejasvi Hegde

S22.Imap için 300 Cheers. Gerçek dünya senaryolarında Basit Verimli ve Kullanışlı. The .Search () i sbrilliant
Vishnoo Rath 01

Bu kitaplığı kullanarak posta kutumun IMAP ile senkronizasyonunu nasıl sürdürebilirim?
JackXandar

1
Oturum açmaya çalışırken neden "HAYIR [WEBALERT bazı url] Web girişi gerekli" mesajıyla InvalidCredentialsException alacağım hakkında herhangi bir fikriniz var mı? Gmail hesabında IMAP etkinleştirildi. Fikirler?
Auri Rahimzadeh

19

IMAP için .NET çerçeve desteği yoktur. Bazı üçüncü taraf bileşenlerini kullanmanız gerekecek.

Deneyin Https://www.limilabs.com/mail'i , çok ekonomik ve kullanımı kolaydır, ayrıca SSL'yi de destekler:

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);
}

Lütfen bunun oluşturduğum ticari bir ürün olduğunu unutmayın.

Buradan indirebilirsiniz: https://www.limilabs.com/mail .



Parola geçmek yerine oAuth 2 kullanılarak bir belirteç geçişini destekliyor mu?
user1166905


2
Harika bileşen, bir cazibe gibi çalışıyor. Deneme sürümünü (neredeyse tamamen işlevsel) birkaç hafta test ettikten sonra bir lisans satın aldı.
Alex

1
Bu gerçekten harika bir bileşendir. Denediğimiz tüm açık kaynaklı şeylerin aksine, bu aslında canlı ve güncel (bunu 2016'da yazıyorum). Teşekkürler @PawelLesnikowski PS. Ben hiçbir şekilde bağlı değilim.
jazzcat

15

MailSystem.NET , IMAP4 için tüm içerir. Ücretsiz ve açık kaynaklıdır.

(Projeye dahil oldum)


2
proje aktif mi? en son sürüm: 14 Aralık 2009 Pazartesi 09:00
Kiquenet

1
İhtiyaçların çoğu halihazırda karşılandığı için bugün eklenecek çok fazla özellik yok. Gönderildiklerinde yalnızca hata düzeltmeleri ve küçük iyileştirmeler yapılır. Ancak çok fazla değil, kütüphane çok sağlam.

4
Bu proje ölmüş gibi görünüyor. IMAP4 ile düzgün çalışmıyor, güncelleme yok ve yazarlardan yanıt yok
Denis Vuyka

6
@alhambraeidos ve @Denis doğru. Proje neredeyse öldü. Örnekler, VS 2008 veya 2010'da kutudan çıkarılmıyor. Onları yukarı dönüştürdüm ve 16 referans sorununu gözden geçirmek zorunda kaldım. Belgeler güncel değil ve CodePlex sayfası, geçen yıl veya daha fazlasında herhangi bir sorun / yorum için yanıtlanmamış durumda. Vazgeçtim ve Mail.dll'yi satın almaya son verdim (hayır, onlara bağlı değilim).
sohtimsso1970

2
proje oldukça öldü, IDLE düzgün çalışmıyor mailsystem.codeplex.com/workitem/23586
Greg Dean

5

Kitaplığı kullanmayı deneyin: https://imapx.codeplex.com/

Bu kitaplık ücretsiz, açık kaynaktır ve şuna bir örnek var: https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox


Bilginize: imapx IDLE'yi desteklemiyor gibi görünüyor
Greg Dean

ImapX artık IDLE uzantısını destekliyor.
Pavel Azanov

benim deneyimime göre bu kitaplık AE.Net.Mail'den önemli ölçüde daha yavaştır - bu hiçbir anlam ifade etmiyor ama uyarılmalıdır!
Simon_Weaver

1
Bu kütüphane büyük hataları içerir (v2.0.0.18).
David

2

Ben kendim denemedim, ancak bu deneyebileceğiniz ücretsiz bir kitaplık (bunun SSL kısmından pek emin değilim):

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

Ayrıca, SSL için parametreleri olan xemail vardır:

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

[DÜZENLE] Eğer siz (veya müşteri) profesyonel bir posta istemcisi için paranız varsa, bu ileti dizisinin bazı iyi önerileri vardır:

E-posta gelen kutusuna erişmek için bir .NET bileşenine yönelik öneriler


CodeProject de Imaplibrary ben kullanıyordum ama gerekli işlevselliği Kötü ödeme xemail yok ne
UnkwnTech

stackoverflow.com/questions/86553/… , Bu hatayı alıyorum: sayfa bulunamadı
Kiquenet

Bağlantıyı değiştirdim, bana bildirdiğiniz için teşekkür ederim.
Espo

REE: cevabınızda codeproject.com/KB/IP/imaplibrary.aspx ; Oldukça havalı. Geçen haftadan beri bir e-posta istemcisi için kullanıyorum ve onunla herhangi bir sorun yaşamadım.
βӔḺṪẶⱫŌŔ
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.