การเข้าถึง Imap ใน C # [ปิด]


112

มีวิธีการในตัวในการเข้าถึงเซิร์ฟเวอร์ Imap (ด้วย SSL) ใน C # หรือมีไลบรารีฟรีที่ดีหรือไม่?



7
ไม่ ลิงก์ที่คุณโพสต์เกี่ยวข้องกับ IMAP สำหรับ Gmail โดยเฉพาะ อย่างไรก็ตามโพสต์นี้ไม่ใช่

72
โปรดใช้ความระมัดระวังมากขึ้นเมื่อพูด / ทำเครื่องหมายคำถามว่าซ้ำกัน ฉันเบื่อที่จะเห็น "ซ้ำ: [ลิงก์] ทุกที่หลายครั้งที่ลิงก์อื่น ๆ ไม่สามารถตอบสิ่งที่" ผู้ทำสำเนา "ต้องการทราบได้ไม่ว่าจะเป็นคำถามเดียวกันหรือไม่
ก็ตาม

7
คำถามถูกปิดดังนั้นฉันจึงไม่สามารถเพิ่มสิ่งนี้เป็นคำตอบ: github.com/jstedfast/MailKitดูเหมือนจะเป็นตัวเลือกที่ดีและเป็นโครงการที่ใช้งานอยู่
รอรี

4
การทำเครื่องหมายคำถามที่เป็นประโยชน์ว่าไม่สร้างสรรค์นั้นไม่สร้างสรรค์ ...
Robert J

คำตอบ:


90

ฉันได้รับการค้นหาวิธีการแก้ปัญหา IMAP สำหรับขณะนี้และหลังจากที่พยายามค่อนข้างน้อยฉันจะมีAE.Net.Mail

คุณสามารถดาวน์โหลดโค้ดได้โดยไปที่แท็บ Code แล้วคลิกไอคอน 'ดาวน์โหลด' ขนาดเล็ก เนื่องจากผู้เขียนไม่มีการดาวน์โหลดที่สร้างไว้ล่วงหน้าใด ๆ คุณจึงต้องรวบรวมด้วยตนเอง (ฉันเชื่อว่าคุณสามารถผ่าน NuGet ได้) ไม่มี. dll ใน bin / โฟลเดอร์อีกต่อไป

ไม่มีเอกสารประกอบซึ่งฉันคิดว่าเป็นข้อเสีย แต่ฉันสามารถแส้ได้โดยดูที่ซอร์สโค้ด (ใช่สำหรับโอเพ่นซอร์ส!) และใช้ Intellisense รหัสด้านล่างนี้เชื่อมต่อกับเซิร์ฟเวอร์ 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", "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();

ตรวจสอบให้แน่ใจว่าคุณได้ชำระเงินในหน้าGithubสำหรับเวอร์ชันใหม่ล่าสุดและตัวอย่างโค้ดที่ดีกว่า


1
มันดูง่ายเกินไปที่จะเป็นจริงฮ่า ๆ ฉันจะไปดู!
bendr

4
@jase - ถูกแล้ว! ฉันไม่แน่ใจว่าปัญหาคืออะไรกันแน่ (ดูเหมือนว่าไฟล์คุณสมบัติ?) แต่ฉันสามารถรวบรวมได้โดยคัดลอกไฟล์ที่เกี่ยวข้องทั้งหมดไปยังโปรเจ็กต์คลาสใหม่ ไม่ว่าในกรณีใดฉันสร้างไลบรารีให้คุณและคุณสามารถเพิ่มเป็น. dll อ้างอิงในโครงการของคุณได้ dl.dropbox.com/u/8037514/AE.Net.Mail.zipเช่นเดียวกับข้อจำกัดความรับผิดชอบนี้มาพร้อมกับการรับประกันและลิขสิทธิ์ใด ๆ ก็ตามที่โครงการดั้งเดิมมาพร้อมกับฉันจะไม่รับผิดชอบหากเกิดระเบิดขึ้น ฯลฯ เป็นต้นดี โชค!
Dominic K

4
+1 ฉันเพิ่งดาวน์โหลดและรวบรวมคอมมิตล่าสุดของAE.Net.Mailใน VS2010 และทำงานได้อย่างสมบูรณ์ ฉันมีมากประสบการณ์ที่ดีกว่ากับ ImapX ขอบคุณสำหรับเคล็ดลับ รหัสที่นี่ทำให้ฉันเริ่มต้นได้ดี
RedFilter

8
ทำไมคนถึงไปเขียนสิ่งดีๆแบบนี้แล้วรวมถึงไม่มีเอกสารประกอบ? ฉันไม่เข้าใจ
Simon_Weaver

2
ใช้งานได้ แต่ในเวอร์ชันที่ใหม่กว่าตัวสร้างควรมีลักษณะดังนี้: ImapClient ic = new ImapClient ("imap.gmail.com", "name@gmail.com", "pass", AuthMethods.Login, 993, true);
Ogglas

34

ด้วยความหวังว่าจะเป็นประโยชน์กับบางคนคุณอาจต้องการตรวจสอบการเดินทางของฉันที่:

S22. แผนที่

ในขณะที่มีไลบรารี IMAP ที่ดีและมีเอกสารอย่างดีสำหรับ. NET ให้ใช้งาน แต่ไม่มีฟรีสำหรับการใช้งานส่วนตัวนับประสาอะไรกับการใช้งานเชิงพาณิชย์ ... และฉันก็ไม่ใช่ทุกคนที่พอใจกับทางเลือกฟรีที่ถูกทิ้งร้างส่วนใหญ่ที่ฉันพบ

S22.Imap รองรับการแจ้งเตือน IMAP IDLE ตลอดจน SSL และการดึงข้อความบางส่วน ฉันได้ใช้ความพยายามในการจัดทำเอกสารและปรับปรุงให้ทันสมัยอยู่เสมอเนื่องจากจากโครงการที่ฉันพบเอกสารมักจะเบาบางหรือไม่มีอยู่จริง

อย่าลังเลที่จะทดลองใช้และแจ้งให้เราทราบหากคุณพบปัญหาใด ๆ !


ลองใช้ AE.Net.Mail ก่อนและพบ S22.Imap จะดีกว่าทั้งในเอกสารและคุณสมบัติที่ฉันต้องการจนถึงตอนนี้
angularsen

ฉันชอบแนวคิดของ S22.Imap แต่สิ่งที่ฉันขาดหายไปคือการเข้าถึงผ่านดัชนีหรือหมายเลขข้อความ
Tejasvi Hegde

300 ไชโยสำหรับ S22 แผนที่ เรียบง่ายมีประสิทธิภาพและมีประโยชน์ในสถานการณ์จริง The.Search () i sbrilliant
Vishnoo Rath

ฉันจะทำข้อมูลให้ตรงกันสำหรับกล่องจดหมายของฉันกับ IMAP โดยใช้ไลบรารีนี้ได้อย่างไร
JackXandar

1
มีความคิดว่าทำไมฉันจึงได้รับ InvalidCredentialsException พร้อมข้อความ "NO [WEBALERT some url] Web login required" เมื่อพยายามเข้าสู่ระบบ IMAP ถูกเปิดใช้งานในบัญชี Gmail ไอเดีย?
Auri Rahimzadeh

19

ไม่มีการสนับสนุน. NET framework สำหรับ IMAP คุณจะต้องใช้องค์ประกอบของบุคคลที่สาม

ลองใช้https://www.limilabs.com/mailราคาไม่แพงและใช้งานง่ายนอกจากนี้ยังรองรับ 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);
}

โปรดทราบว่านี่เป็นผลิตภัณฑ์เชิงพาณิชย์ที่ฉันสร้างขึ้น

คุณสามารถดาวน์โหลดได้ที่นี่: https://www.limilabs.com/mail


3
ดาวน์โหลดและเริ่มใช้งานได้ในไม่กี่นาที :) ดีมาก
Moulde

รองรับการส่งโทเค็นโดยใช้ oAuth 2 แทนการส่งรหัสผ่านหรือไม่
user1166905


2
ส่วนประกอบที่ยอดเยี่ยมใช้งานได้เหมือนมีเสน่ห์ ทดสอบเวอร์ชันทดลองใช้ (เกือบจะทำงานได้เต็มรูปแบบ) เป็นเวลาสองสามสัปดาห์จากนั้นจึงซื้อใบอนุญาต
Alex

1
นี่เป็นส่วนประกอบที่ยอดเยี่ยมอย่างแน่นอน ซึ่งแตกต่างจากโอเพนซอร์สทั้งหมดที่เราพยายามสิ่งนี้มีชีวิตจริงและเป็นปัจจุบัน (ฉันกำลังเขียนสิ่งนี้ในปี 2559) ขอบคุณ @PawelLesnikowski PS. ฉันไม่มีส่วนเกี่ยวข้อง แต่อย่างใด
jazzcat

15

MailSystem.NETมีทุกความต้องการของคุณสำหรับ IMAP4 ฟรีและโอเพ่นซอร์ส

(ฉันมีส่วนร่วมในโครงการ)


2
โครงการใช้งานอยู่ ?? เวอร์ชันล่าสุดลงวันที่: จันทร์ 14 ธันวาคม 2552 เวลา 9.00 น.
Kiquenet

1
ไม่มีฟีเจอร์ให้เพิ่มในวันนี้เนื่องจากความต้องการส่วนใหญ่ครอบคลุมแล้ว เฉพาะการแก้ไขข้อบกพร่องและการปรับปรุงเล็กน้อยเท่านั้นที่ได้รับการยอมรับเมื่อมีการส่ง แต่มีไม่มากนักห้องสมุดมีความแข็งแรงมาก

4
โครงการนี้ดูเหมือนจะตายไปแล้ว ไม่ทำงานกับ IMAP4 อย่างถูกต้องไม่มีการอัปเดตและไม่มีคำตอบจากผู้เขียน
Denis Vuyka

6
@alhambraeidos และ @Denis ถูกต้อง โครงการนี้ตายจริง ตัวอย่างไม่ได้สร้างนอกกรอบทั้งใน VS 2008 หรือ 2010 ฉันกลับหัวกลับด้านแล้วต้องลุยผ่าน 16 ประเด็นอ้างอิง เอกสารนี้ล้าสมัยและหน้า CodePlex ไม่ได้รับคำตอบสำหรับปัญหา / ความคิดเห็นใด ๆ ในปีที่แล้วหรือมากกว่านั้น ฉันยอมแพ้และลงเอยด้วยการซื้อ Mail.dll (ไม่ฉันไม่มีส่วนเกี่ยวข้องกับพวกเขา)
sohtimsso1970

2
โครงการค่อนข้างตาย IDLE ทำงานไม่ถูกต้องmailystem.codeplex.com/workitem/23586
Greg Dean

5

ลองใช้ห้องสมุด: https://imapx.codeplex.com/

ห้องสมุดนั้นฟรีโอเพ่นซอร์สและมีตัวอย่างที่ https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox


FYI: imapx ดูเหมือนจะไม่รองรับ IDLE
Greg Dean

ImapX รองรับส่วนขยาย IDLE แล้ว
Pavel Azanov

ห้องสมุดนี้ในประสบการณ์ของฉันช้ากว่า AE.Net.Mail อย่างมีนัยสำคัญซึ่งไม่สมเหตุสมผล แต่ได้รับการเตือน!
Simon_Weaver

1
ไลบรารีนี้มีจุดบกพร่องที่สำคัญ (v2.0.0.18)
เดวิด

2

ฉันไม่ได้ลองด้วยตัวเอง แต่นี่เป็นห้องสมุดฟรีที่คุณสามารถลองได้ (ฉันไม่แน่ใจเกี่ยวกับส่วน SSL ในส่วนนี้):

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

นอกจากนี้ยังมี xemail ซึ่งมีพารามิเตอร์สำหรับ SSL:

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

[แก้ไข] หากคุณ (หรือลูกค้า) มีเงินสำหรับโปรแกรมรับส่งเมลมืออาชีพชุดข้อความนี้มีคำแนะนำที่ดี:

คำแนะนำสำหรับคอมโพเนนต์. NET เพื่อเข้าถึงกล่องจดหมายอีเมล


Imaplibrary ที่ codeproject เป็นสิ่งที่ฉันใช้ แต่ไม่มีฟังก์ชันที่จำเป็น Ill checkout xemail
UnkwnTech

stackoverflow.com/questions/86553/… , ฉันได้รับข้อผิดพลาดนี้: ไม่พบหน้า
Kiquenet

ฉันเปลี่ยนลิงค์แล้วขอบคุณที่แจ้งให้เราทราบ
Espo

REE: codeproject.com/KB/IP/imaplibrary.aspxในคำตอบของคุณ มันค่อนข้างเย็น ใช้งานมาตั้งแต่สัปดาห์ที่แล้วสำหรับไคลเอนต์อีเมลและไม่มีปัญหาใด ๆ
βӔḺṪẶⱫŌŔ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.