2008-08-20 29 views
16

Tôi đã được yêu cầu viết một dịch vụ Windows trong C# để theo dõi định kỳ hộp thư đến email và chèn chi tiết của bất kỳ thư nào được nhận vào bảng cơ sở dữ liệu.Đề xuất cho thành phần .NET truy cập hộp thư email

Bản năng của tôi là thực hiện điều này thông qua POP3 và đủ chắc chắn, Googling cho "thành phần .NET POP3" tạo ra vô số kết quả (ok, 146.000).

Có ai đã làm bất cứ điều gì tương tự trước đây và bạn có thể giới thiệu một thành phần phong nha không phá vỡ ngân hàng (tối đa vài trăm đô la) không?

Có bất kỳ lợi ích nào khi sử dụng IMAP thay vì POP3 không?

+0

https://github.com/jstedfast/MailKit là một tùy chọn tốt và hoạt động. – Rory

Trả lời

4

Tôi recomment chilkat. Họ có các thành phần khá ổn định và bạn có thể nhận được thành phần email của họ với giá rẻ là 99 đô la cho một nhà phát triển duy nhất. Cá nhân, tôi nghĩ rằng đi với toàn bộ gói các thành phần là một thỏa thuận tốt hơn, vì nó chỉ $ 289, và đi kèm với nhiều thành phần hữu ích. Tôi không liên kết với họ bằng bất kỳ cách nào, mặc dù tôi có thể nghe như tôi.

+0

Khiếu nại duy nhất của tôi với Chilkat là API không "cảm thấy" rất nhiều. Net (nếu bạn biết ý tôi là gì). ví dụ. "GetLastError()" thay vì ngoại lệ. Thành phần tuyệt vời mặc dù và một mức giá tuyệt vời. Hỗ trợ là hoàn toàn top-notch là tốt, tuyệt vời nhanh chóng quay lại trong thời gian tôi đã có câu hỏi. –

+1

Đó có thể là do thư viện cũ được chuyển sang .Net. – Kibbee

+2

Trường hợp ngoại lệ chắc chắn "cảm thấy".nhưng điều đáng nói là Nguyên tắc mã Google sử dụng mã lỗi và xác nhận thay vì ngoại lệ. Họ cũng làm cho nó rõ ràng trong tài liệu mà họ không thực sự cảm thấy rằng việc sử dụng Ngoại lệ là 'sai', nhưng họ cung cấp một số lý do chính đáng không. –

6

Tôi sử dụng SharpMimeTools mã nguồn mở và miễn phí trong ứng dụng của mình, BugTracker.NET. Nó đã được rất đáng tin cậy:

http://anmar.eu.org/projects/sharpmimetools/

Xem các tập tin POP3Client.cs, POP3Main.cs, và insert_bug.aspx

+0

Cảm ơn Corey, tôi sẽ xem xét. –

+0

Tôi không biết bạn có Pop3Client.cs từ đâu. Tôi nghĩ rằng SharpMimeTools chỉ là một phân tích Mime tuyệt vời mà thôi. –

1

Lumisoft là mã nguồn mở và bao gồm IMAP và POP khách hàng (trong số những thứ khác) . Tôi đã sử dụng chúng trong nhiều năm mà không có vấn đề gì.

+0

Xin chào, bạn có thể chia sẻ mã mẫu để xem danh sách các email không nhìn thấy bằng C# không? –

3

Tôi muốn giới thiệu AdvancedIntellect. Có các thành phần cho POP3 và IMAP (ASPNetPOP3 và ASPNetIMAP). Chất lượng tốt và hỗ trợ rất nhạy bén - Tôi nhớ đã nhận được câu trả lời cho câu hỏi của tôi vào cuối tuần.

2

Nếu bạn sử dụng một triển khai POP3 nguồn mở hoặc một cái gì đó tự do có sẵn thì bạn sẽ có quyền truy cập để sửa đổi mã và mở rộng nó theo hướng cần thiết. Google nhanh chóng dẫn đến C# POP3 code from Code Project này để truy xuất thư.

Có điều gì đó trao quyền cho việc tự xoay vòng của riêng bạn hoặc ít nhất là mở rộng nó.

alt text

+0

Ngoài ra, điều này sẽ không phá vỡ ngân hàng với chi phí ban đầu là $ 0. Tuy nhiên công việc phát triển liên tục và tổng thể "TCO" nên được xem xét. –

3

Bạn có thể muốn kiểm tra Rebex Mail component của chúng tôi. Nó bao gồm IMAP, SMTP, POP3 giao thức và và Trình phân tích cú pháp S/MIME.

POP3 không có khái niệm về thư chưa đọc hoặc tìm kiếm thư phù hợp với tiêu chí cụ thể. POP3 chỉ cần trả lại tất cả thư trong hộp thư đến của bạn.

Sử dụng IMAP bạn có thể hướng dẫn máy chủ IMAP gửi cho bạn tin nhắn chưa đọc, tin nhắn đến từ thời gian cụ thể, tin nhắn từ người dùng cụ thể v.v. Bạn không phải tải xuống tất cả cho khách hàng và thực hiện việc lọc ở đó.

Mã sau đây cho biết cách tải xuống thư chưa đọc từ máy chủ Imap sử dụng lớp Rebex.Net.Imap.

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

Ví dụ về kết hợp nhiều tiêu chí tìm kiếm sau. Thao tác này sẽ trả về các thư từ năm trước lớn hơn 100KB.

ImapMessageCollection messages = client.Search 
    (
    ImapSearchParameter.Arrived(DateTime.Now.AddYears(-1), DateTime.Now), 
    ImapSearchParameter.Size(1024 * 100, Int32.MaxValue) 
); 

Bạn có thể tải về dùng thử từ rebex.net/secure-mail.net/download.aspx

+0

Để lại tuyên bố từ chối trách nhiệm rằng đây là sản phẩm của bạn. – DMan

+1

@DMan: Nó đã có sẵn trong dòng đầu tiên trong gần một năm nay ("Bạn có thể muốn kiểm tra __our__ Rebex Mail ..."). Tôi không cố giấu kết nối của mình. Đề nghị làm thế nào để cải thiện nó được chào đón (tiếng Anh không phải là ngôn ngữ đầu tiên của tôi). –

+0

xin lỗi, tôi đã bỏ lỡ sự tinh tế đó. Lời xin lỗi của tôi. – DMan

0

C# Thư có giá $ 0 mà còn GNU GPL được cấp phép là, do đó hãy chắc chắn đó là OK.

7

Với giao thức IMAP, bạn có thể truy cập vào thư mục phụtình trạng nhắn set (xem/vô hình), bạn cũng có thể sử dụng IDLE tính năng cho các thông báo ngay lập tức.

Mail.dll bao gồm POP3, IMAP, SMTP thành phần với SSL hỗ trợ và phân tích cú pháp MIME mạnh mẽ:

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

Xin lưu ý rằng đây là sản phẩm thương mại mà tôi đã tạo ra.

Bạn có thể tải nó tại https://www.limilabs.com/mail

0

Bạn có thể làm điều này bằng Objects MailBee.NET: http://www.afterlogic.com/products/net-email-components

Trong khi tôi khuyên bạn nên sử dụng IMAP thực sự, đặc biệt là kể từ khi nó cung cấp hỗ trợ IDLE đề cập ở đây đã có, bạn có thể làm tương tự với POP3. Có một mô tả ngắn gọn của cả hai phương pháp tiếp cận, và một mẫu hoàn chỉnh cho IMAP kịch bản IDLE:

http://www.afterlogic.com/wiki/Getting_notifications_about_new_messages_in_mailbox_%28IMAP_IDLE_and_polling%29

Xin lưu ý rằng tôi đang liên kết với AfterLogic, và tôi sẽ vui mừng để hỗ trợ bạn nếu bạn cần bất kỳ sự giúp đỡ , hãy chọn tùy chọn Yêu cầu hỗ trợ tại trang web của chúng tôi.

0

IMAPX2 là tốt nhất. Sử dụng IMAP, bạn có thể kiểm soát các thư mục trong máy chủ thư, một điều bạn sẽ không thể thực hiện bằng POP. IMAPX là mã nguồn mở mà bạn có thể xem và sử dụng miễn phí.

IMAPX thẳng về phía trước và đáng tin cậy.

Các vấn đề liên quan