Mengakses Imap di C # [ditutup]

112

Apakah ada metode built-in untuk mengakses server Imap (dengan SSL) di C # atau apakah ada perpustakaan gratis yang bagus?

UnkwnTech
sumber
3
duplikat: stackoverflow.com/questions/545724/…
Mauricio Scheffer
7
Nggak. Tautan yang Anda posting terkait dengan IMAP khusus untuk Gmail. Posting ini, bagaimanapun, bukan.
72
Harap lebih berhati-hati saat mengatakan / menandai pertanyaan sebagai duplikat. Saya muak melihat "duplikat: [tautan] di mana-mana.
Sering
7
Pertanyaan ditutup jadi saya tidak bisa menambahkan ini sebagai jawaban: github.com/jstedfast/MailKit tampaknya menjadi pilihan yang baik dan proyek aktif.
Rory
4
Menandai pertanyaan yang berguna sebagai tidak konstruktif memang tidak konstruktif ...
Robert J

Jawaban:

90

Saya telah mencari solusi IMAP untuk beberapa waktu sekarang, dan setelah mencoba beberapa, saya menggunakan AE.Net.Mail .

Anda dapat mengunduh kode dengan membuka tab Kode dan mengeklik ikon 'Unduh' kecil. Karena penulis tidak menyediakan unduhan yang sudah dibuat sebelumnya, Anda harus mengkompilasinya sendiri. (Saya yakin Anda bisa mendapatkannya melalui NuGet). Tidak ada lagi .dll di tempat sampah / folder.

Tidak ada dokumentasi, yang saya anggap sebagai kerugian, tetapi saya dapat menyiapkannya dengan melihat kode sumbernya (yay untuk open source!) Dan menggunakan Intellisense. Kode di bawah ini secara khusus menghubungkan ke server IMAP 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", "[email protected]", "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();

Pastikan Anda membayar halaman Github untuk versi terbaru dan beberapa contoh kode yang lebih baik.

Dominic K
sumber
1
Ini terlihat terlalu mudah untuk menjadi kenyataan lol. Aku akan memeriksanya!
bendr
4
@jase - Anda benar! Saya tidak yakin apa masalahnya sebenarnya (sepertinya file properti?) Tetapi saya bisa membuatnya dikompilasi dengan menyalin semua file yang relevan ke dalam proyek kelas baru. Apapun masalahnya, saya membangun perpustakaan untuk Anda sehingga Anda dapat menambahkannya sebagai referensi .dll untuk proyek Anda. dl.dropbox.com/u/8037514/AE.Net.Mail.zip Sama seperti penafian, ini datang dengan jaminan dan hak cipta apa pun yang disertakan dengan proyek asli, dan saya tidak bertanggung jawab jika meledak, dll. Baik keberuntungan!
Dominic K
4
+1 Saya baru saja mengunduh dan menyusun komit terbaru dari AE.Net.Mail di VS2010, dan itu bekerja dengan sempurna. Saya memiliki pengalaman yang jauh lebih baik daripada dengan ImapX, terima kasih atas tipnya. Kode di sini memberi saya langkah awal yang baik.
RedFilter
8
mengapa orang pergi dan menulis hal-hal hebat seperti ini dan kemudian pada dasarnya tidak menyertakan dokumentasi? Saya tidak mengerti
Simon_Weaver
2
Ia bekerja tetapi dalam versi yang lebih baru konstruktor akan terlihat seperti ini: ImapClient ic = new ImapClient ("imap.gmail.com", "[email protected]", "pass", AuthMethods.Login, 993, true);
Ogglas
34

Dengan harapan dapat bermanfaat bagi sebagian orang, Anda mungkin ingin melihat pengalaman saya:

S22.Imap

Meskipun ada beberapa perpustakaan IMAP yang baik dan terdokumentasi dengan baik untuk .NET tersedia, tidak satupun dari mereka yang gratis untuk penggunaan pribadi, apalagi komersial ... dan saya tidak begitu puas dengan sebagian besar alternatif gratis yang saya temukan.

S22.Imap mendukung notifikasi IMAP IDLE serta SSL dan pengambilan sebagian pesan. Saya telah berusaha keras untuk menghasilkan dokumentasi dan menjaganya tetap mutakhir, karena dengan proyek yang saya temukan, dokumentasi sering kali jarang atau tidak ada.

Jangan ragu untuk mencobanya dan beri tahu saya jika Anda mengalami masalah apa pun!

pengguna1662990
sumber
Mencoba AE.Net.Mail terlebih dahulu dan menemukan S22.Imap lebih baik, baik pada dokumentasi maupun fitur yang saya butuhkan sejauh ini.
angularsen
Saya suka konsep S22.Imap. Tapi Apa yang saya lewatkan adalah mengakses melalui indeks atau nomor pesan.
Tejasvi Hegde
300 Cheers untuk S22.Imap. Sederhana Efisien dan Berguna dalam skenario dunia nyata. The .Search () i sbrilliant
Vishnoo Rath
Bagaimana cara menjaga sinkronisasi kotak surat saya dengan IMAP menggunakan pustaka ini?
JackXandar
1
Adakah ide mengapa saya mendapatkan InvalidCredentialsException dengan pesan "NO [WEBALERT some url] Web login required" saat mencoba masuk? IMAP diaktifkan di akun Gmail. Ide ide?
Auri Rahimzadeh
19

Tidak ada dukungan framework .NET untuk IMAP. Anda harus menggunakan beberapa komponen pihak ketiga.

Coba https://www.limilabs.com/mail , sangat terjangkau dan mudah digunakan, juga mendukung 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);
}

Harap dicatat bahwa ini adalah produk komersial yang saya buat.

Anda dapat mendownloadnya di sini: https://www.limilabs.com/mail .

Pawel Lesnikowski
sumber
3
Diunduh dan sudah aktif dan
berfungsi
Apakah itu mendukung penerusan token menggunakan oAuth 2 alih-alih meneruskan sandi?
pengguna1166905
Itu mendukung OAuth2: limilabs.com/blog/oauth2-gmail-imap-web-applications
Pawel Lesnikowski
2
Komponen hebat, berfungsi seperti pesona. Menguji versi trial (hampir berfungsi penuh) selama beberapa minggu kemudian membeli lisensi.
Alex
1
Ini memang komponen yang hebat. Tidak seperti semua hal open-source yang kami coba, yang satu ini sebenarnya hidup dan mutakhir (saya menulis ini pada 2016). Terima kasih @PawelLesnikowski PS. Saya tidak berafiliasi dengan cara apa pun.
jazzcat
15

MailSystem.NET berisi semua kebutuhan Anda akan IMAP4. Gratis & open source.

(Saya terlibat dalam proyek)

Piotr Kula
sumber
2
proyek ini aktif ?? versi terbaru tertanggal: Senin 14 Desember 2009 pukul 09.00
Kiquenet
1
Tidak banyak fitur untuk ditambahkan hari ini karena sebagian besar kebutuhan sudah tercakup. Hanya perbaikan bug dan peningkatan kecil yang dilakukan saat dikirimkan. Tapi jumlahnya tidak banyak, perpustakaannya sangat kuat.
4
Proyek ini sepertinya sudah mati. Tidak bekerja dengan IMAP4 dengan baik, tidak ada pembaruan dan tidak ada jawaban dari penulis
Denis Vuyka
6
@alhambraeidos dan @Denis sudah benar. Proyek ini hampir mati. Sampel tidak dibangun, di luar kotak, baik di VS 2008 atau 2010. Saya meng-upconvert mereka kemudian harus mengarungi 16 masalah referensi. Dokumentasi sudah kedaluwarsa dan halaman CodePlex tidak terjawab untuk masalah / komentar apa pun dalam setahun terakhir atau lebih. Saya menyerah dan akhirnya membeli Mail.dll (tidak, saya tidak berafiliasi dengan mereka).
sohtimsso1970
2
proyek cukup mati, IDLE tidak bekerja dengan baik mailsystem.codeplex.com/workitem/23586
Greg Dean
5

Coba gunakan perpustakaan: https://imapx.codeplex.com/

Library itu gratis, open source, dan memiliki contoh di ini: https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox

a777andrey
sumber
FYI: imapx tampaknya tidak mendukung IDLE
Greg Dean
ImapX memiliki dukungan untuk ekstensi IDLE sekarang.
Pavel Azanov
perpustakaan ini menurut pengalaman saya signifikan lebih lambat daripada AE.Net.Mail - itu tidak masuk akal sama sekali tetapi berhati-hatilah!
Simon_Weaver
1
Library ini berisi bug utama (v2.0.0.18).
David
2

Saya belum mencobanya sendiri, tetapi ini adalah pustaka gratis yang dapat Anda coba (saya tidak begitu yakin tentang bagian SSL yang satu ini):

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

Juga, ada xemail, yang memiliki parameter untuk SSL:

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

[EDIT] Jika Anda (atau klien) punya uang untuk klien email profesional, utas ini memiliki beberapa rekomendasi bagus:

Rekomendasi untuk komponen .NET untuk mengakses kotak masuk email

Espo
sumber
Perpustakaan di codeproject adalah apa yang saya gunakan tetapi tidak memiliki fungsionalitas yang diperlukan. Saya akan checkout xemail
UnkwnTech
stackoverflow.com/questions/86553/… ,, saya mendapatkan kesalahan ini: halaman tidak ditemukan
Kiquenet
Saya mengubah link, terima kasih telah memberi tahu saya.
Espo
REE: codeproject.com/KB/IP/imaplibrary.aspx di jawaban Anda; Itu sangat keren. Telah menggunakannya sejak minggu lalu untuk klien email dan tidak ada masalah dengan itu.
βӔḺṪẶⱫŌŔ