2008-10-25 38 views
53

Tôi có một ứng dụng web yêu cầu thành phần dựa trên máy chủ để truy cập email POP3 theo định kỳ và truy xuất email. Dịch vụ này sau đó cần phải xử lý các email đó sẽ bao gồm:Tích hợp chức năng khách POP3 vào ứng dụng C#?

  • Members email chống lại một số quy tắc kinh doanh (hiện nó chứa một tham chiếu hợp lệ trong dòng chủ đề, mà người dùng gửi qua đường bưu điện, vv)
  • Phân tích và tiết kiệm bất kỳ file đính kèm vào đĩa
  • Hãy cơ thể email và tập tin đính kèm chi tiết và tạo một mục mới trong cơ sở dữ liệu
  • Hoặc update item đang tồn tại nơi tài liệu tham khảo phù hợp với dòng tiêu đề email gửi đến

Cách tốt nhất để tiếp cận điều này là gì? Tôi thực sự không muốn phải viết một khách hàng POP3 từ đầu, nhưng tôi cần để có thể tùy chỉnh việc xử lý email. Lý tưởng nhất là tôi sẽ có thể cắm vào một số thành phần mà không được tiếp cận và thu hồi đối với tôi, trở về mảng các file đính kèm, nội dung, dòng tiêu đề, vv sẵn sàng cho việc xử lý của tôi ...

[UPDATE: Nhận xét]

OK, vì vậy tôi đã dành một số tiền hợp lý của thời gian nhìn vào thư viện (chủ yếu là miễn phí) NET POP3 vì vậy tôi nghĩ rằng tôi muốn cung cấp một đánh giá ngắn của một số những đề cập dưới đây và một vài người khác:

  • Pop3.net - miễn phí - hoạt động OK, rất cơ bản về mặt chức năng được cung cấp. Điều này là khá nhiều chỉ là các lệnh POP3 và một số mã hóa base64, nhưng nó rất thẳng về phía trước - có lẽ là một giới thiệu tốt
  • Pop3 Wizard - thương mại/một số mã nguồn mở - không thể có được điều này để xây dựng, thiếu DLL, tôi sẽ không bận tâm với điều này
  • C#Mail - miễn phí cho mục đích cá nhân - hoạt động tốt, đi kèm với trình phân tích cú pháp Mime và ứng dụng SMTP, tuy nhiên nhận xét bằng tiếng Nhật (không phải là một vấn đề lớn) và nó không hoạt động với SSL '. - Tôi phải thay đổi hàm tạo SslStream mà sau đó nó không hoạt động được
  • OpenPOP - miễn phí - chưa được cập nhật trong khoảng 5 năm nên trạng thái hiện tại là .NET 1.0, không hỗ trợ SSL nhưng không có vấn đề gì giải quyết - Tôi chỉ thay thế existin g luồng với SslStream và nó hoạt động. Đi kèm với trình phân tích cú pháp Mime.

Trong số các thư viện miễn phí, tôi muốn tìm C# Mail hoặc OpenPOP.

Tôi đã xem một số thư viện thương mại: Chillkat, Rebex, RemObjects, JMail.net. Dựa trên các tính năng, giá cả và ấn tượng của công ty tôi có lẽ sẽ đi cho Rebex và có thể trong tương lai nếu yêu cầu của tôi thay đổi hoặc tôi gặp phải các vấn đề sản xuất với C# Mail hoặc OpenPOP.

Trong trường hợp nhu cầu của bất kỳ ai đó, đây là sự thay thế SslStream constructor mà tôi sử dụng để kích hoạt SSL với C# Mail và OpenPOP:

SslStream stream = new SslStream(clientSocket.GetStream(), false, 
       delegate(object sender, X509Certificate cert, 
       X509Chain chain, SslPolicyErrors errors) { return true; }); 
+1

Cảm ơn bạn đã cập nhật và cung cấp chi tiết về nghiên cứu của mình. –

+0

+1; Đã có một yêu cầu rất giống nhau. Cảm ơn bạn đã thực hiện nghiên cứu. – tsilb

+0

Một nhận xét nhỏ: Tôi đã thử nghiệm một vài trong số các triển khai được đề cập và phải sử dụng hàng ngày mới nhất từ ​​http://anmar.eu.org/projects/sharpmimetools/files/daily/ để giải mã đúng MIME. C# Mail không thể giải mã chính xác non-ascii, và hầu hết các lỗi khác không thành công tại mã utf8, q hoặc các chi tiết khác. –

Trả lời

1

Có một số việc triển khai client POP3 xung quanh tại codeproject.com. Tôi đã không đánh giá họ, nhưng có lẽ bạn có thể tìm thấy những gì bạn cần ở đó. Nếu không, tôi có thể nói rằng POP3 là một giao thức khá đơn giản. Bạn thậm chí có thể đọc hộp POP3 của bạn với telnet nếu bạn biết 4-5 lệnh.

Bạn thực sự chỉ cần this lệnh và có thể một số giải mã base64 cho tệp đính kèm. Đó là nó.

+3

Tôi nghĩ bạn đánh giá thấp cách MIME phức tạp và đa dạng có thể ở trong thế giới thực. –

+1

vâng, bạn nói rằng phải lol –

1

Jmail.NET. Đừng nhìn xa hơn. Lưu ý rằng phiên bản miễn phí không bao gồm POP3. Bạn sẽ muốn dùng phiên bản Chuẩn (hoặc nhiều hơn). Đừng lo lắng, nó không đắt tiền.

0

Nếu bạn không ngại trả tiền cho một thành phần, chúng tôi đã có thành công lớn với chilkat trong quá khứ. Đối với một vài trăm đô la bạn nhận được một thư viện đó là mứt đóng gói đầy đủ của lòng tốt.

2

C# Mail khả dụng trên Codeplex và khá dễ sử dụng.

7

Tôi đã thực hiện OpenPop cho một dự án gần đây và hài lòng với nó. Nó không những gì nó nói trên tin. (và hoàn toàn miễn phí.)

1

Hãy xem tích hợp POP3 trong ứng dụng nguồn mở BugTracker.NET của tôi tại http://ifdefined.com/bugtrackernet.html. Tất cả các nguồn mở và miễn phí. Phần khó nhất, phân tích cú pháp, được thực hiện trong BugTracker.NET bởi SharpMimeTools tại http://anmar.eu.org/projects/sharpmimetools/

Các tệp quan trọng cho thấy cách tôi đang sử dụng logic POP3 và MIME là POP3Client.cs và insert_bug.aspx.

+0

oh yeah. Mime là một PITA! Nếu đó là tất cả các văn bản thô tục, tho, nó không quá tệ :) Tôi hy vọng vì lợi ích của nó là văn bản thuần túy :) –

1

DasBlog sử dụng thẻ tốt (và miễn phí) - lấy gói nguồn. Tôi đã sử dụng nó (nhưng tôi không thể nhớ ai đã viết nó, và tôi không phải trên máy tính xách tay của tôi - Pavel L tôi nghĩ?). Nó không hoàn hảo, và nó không làm SSL, nhưng nó hoạt động độc đáo nếu không.

+0

dasBlog sử dụng Lesnikowski.Pawel.Mail.Pop3 (http://www.lesnikowski.com/mail/). Nó bây giờ là một sản phẩm thương mại nhưng phiên bản trong dasblog vẫn còn mã nguồn mở – TonyB

1

Tôi đã tạo trình phân tích cú pháp Mime của riêng mình và thêm nó vào CodePlex vì tôi tiếp tục chạy vào các ngoại lệ chưa được xử lý với các ngoại lệ khác khi nó xuất hiện trong các mã hóa lạ. Việc thực hiện khách hàng pop3 là thô, chỉ được thực hiện cho mục đích thử nghiệm, nhưng xử lý ok. Phần phân tích cú pháp Mime điền đối tượng MailMessage chuẩn, để bạn có thể dễ dàng chuyển tiếp nó vào nó. Tôi có thể mở rộng/cải thiện nó theo yêu cầu, nhưng bây giờ nó làm công việc ok cho nhu cầu của tôi. Kiểm tra nó thoải mái.

http://www.codeplex.com/mimeParser

1

Lumisoft là mã nguồn mở và bao gồm một ứng dụng khách POP (trong số những thứ khác). Nó đã được xung quanh trong nhiều năm, rất ổn định.

+0

lý do cho downvote ?? –

+0

có vẻ như là một phát ban của downvoting câu trả lời hoàn toàn hợp lệ gần đây. – Brian

6

Hàm tạo của lớp SslStream đã được sửa đổi và tải lên. Phiên bản được đề xuất không có vấn đề gì khi sử dụng.

+4

-1 vì câu trả lời này không thực sự cung cấp bất kỳ hướng dẫn hoặc liên kết hữu ích nào. – JYelton

2

Bạn có thể muốn bao gồm Mail.dll .NET mail component trong xếp hạng của bạn. Có hỗ trợ SSL, Unicode và hỗ trợ qua email nhiều quốc gia:

using(Pop3 pop3 = new Pop3()) 
{ 
    pop3.Connect("mail.host.com");  // Connect to server 
    pop3.Login("user", "password");  // Login 

    foreach(string uid in pop3.GetAll()) 
    { 
     IMail email = new MailBuilder() 
    .CreateFromEml(pop3.GetMessageByUID(uid)); 

     Console.WriteLine(email.Subject); 
    } 
    pop3.Close(true); 
} 

Giao thức IMAP cũng được hỗ trợ.

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

Bạn có thể tải nó ở đây: http://www.lesnikowski.com/mail

28

Tôi là một trong những nhà phát triển chính của OpenPop.NET. Tôi vừa mới xem xét bài đánh giá này, và phải đi kèm với một số nhận xét về trạng thái hiện tại của OpenPop.NET vì việc xem xét có vẻ đã lỗi thời với sự phát triển.

OpenPop.NET đã trở lại hoạt động tích cực. SSL đã được giới thiệu một nửa năm trở lại. Dự án đã có một quá trình tái cấu trúc lớn và hiện đang ổn định hơn và dễ sử dụng hơn. Khi tôi tiếp quản dự án, nó có rất nhiều lỗi trong đó, và hiện tại tôi không biết gì cả. Rất nhiều tính năng bổ sung đã được triển khai, chủ yếu trong phần phân tích cú pháp MIME. Dự án được hỗ trợ bởi các bài kiểm tra đơn vị, và mỗi khi một lỗi được tìm thấy, một bài kiểm tra đơn vị được tạo ra để hiển thị lỗi này trước khi sửa chữa nó. An accompanying website với các ví dụ hiện có. Cũng có những cập nhật khác, nhưng tôi không muốn đề cập đến tất cả.

Ngoài ra, giấy phép OpenPop.NET đã được thay đổi từ LGPL thành Public Domain (còn gọi là, không hạn chế). Điều này tôi nghĩ là một cải tiến lớn cho người dùng thương mại.

+4

Cảm ơn những người yêu thích! Công việc rất tốt! – richard

1

Vì tôi phải tự động hóa một số thứ xử lý email. Tôi mất OpenPop.net Tôi đã tìm kiếm làm thế nào tôi có thể chuyển tiếp mailmessages với thư viện này và đã xem qua chức năng tuyệt vời này: http://hpop.sourceforge.net/documentation/OpenPop~OpenPop.Mime.Message.ToMailMessage.html

để tóm tắt, tôi đã chọn OpenPop.Net và giới thiệu nó!

Trân trọng, JP

+0

Tôi cũng vừa tìm thấy chức năng 'tuyệt vời', nhưng tôi thấy hình ảnh bị thiếu trong 'MailMessage' mới và bộ sưu tập 'Headers' của nó trống, điều này khiến tôi hơi cảnh giác với nó. – ProfK

+0

Bạn nên thêm vấn đề cho điều đó trên https://github.com/foens/hpop/issues –

2

Một lựa chọn mới (tính đến năm 2014) là MailKit từ Xamarin, phát hành theo giấy phép MIT. Nó phân tích các thông điệp từ đĩa 25x nhanh hơn OpenPOP.NET. Nó bao gồm hỗ trợ IMAP, POP3 và SMTP và dường như rất nhanh và mạnh mẽ.

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