Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Integrating POP3 client functionality into a C# application?

Tags:

.net

review

pop3

I have a web application that requires a server based component to periodically access POP3 email boxes and retrieve emails. The service then needs to process the emails which will involve:

  • Validating the email against some business rules (does it contain a valid reference in the subject line, which user sent the mail, etc.)
  • Analysing and saving any attachments to disk
  • Take the email body and attachment details and create a new item in the database
  • Or update an existing item where the reference matches the incoming email subject line

What is the best way to approach this? I really don't want to have to write a POP3 client from scratch, but I need to be able to customize the processing of emails. Ideally I would be able to plug in some component that does the access and retrieval for me, returning arrays of attachments, body text, subject line, etc. ready for my processing...

[ UPDATE: Reviews ]

OK, so I have spent a fair amount of time looking into (mainly free) .NET POP3 libraries so I thought I'd provide a short review of some of those mentioned below and a few others:

  • Pop3.net - free - works OK, very basic in terms of functionality provided. This is pretty much just the POP3 commands and some base64 encoding, but it's very straight forward - probably a good introduction
  • Pop3 Wizard - commercial / some open source code - couldn't get this to build, missing DLLs, I wouldn't bother with this
  • C#Mail - free for personal use - works well, comes with Mime parser and SMTP client, however the comments are in Japanese (not a big deal) and it didn't work with SSL 'out of the box' - I had to change the SslStream constructor after which it worked no problem
  • OpenPOP - free - hasn't been updated for about 5 years so it's current state is .NET 1.0, doesn't support SSL but that was no problem to resolve - I just replaced the existing stream with an SslStream and it worked. Comes with Mime parser.

Of the free libraries, I'd go for C#Mail or OpenPOP.

I looked at a few commercial libraries: Chillkat, Rebex, RemObjects, JMail.net. Based on features, price and impression of the company I would probably go for Rebex and may in the future if my requirements change or I run into production issues with either of C#Mail or OpenPOP.

In case anyone's needs it, this is the replacement SslStream constructor that I used to enable SSL with C#Mail and OpenPOP:

SslStream stream = new SslStream(clientSocket.GetStream(), false,                  delegate(object sender, X509Certificate cert,                  X509Chain chain, SslPolicyErrors errors) { return true; }); 
like image 322
flesh Avatar asked Oct 25 '08 13:10

flesh


1 Answers

I am one of the main developers of OpenPop.NET. I just fell over this review, and had to come with some comments regarding the current state of OpenPop.NET as the review seems outdated with the development.

OpenPop.NET is back into active development. SSL has been introduced a half year back. The project had a major refactoring and is now much more stable and easy to use. When I took over the project it had a lot of bugs in it, and as of now I currently know none. A lot of extra features have been implemented, mainly in the MIME parser part. The project is backed by unit tests, and each time a bug is found, a unit test is created to show this bug before fixing it. An accompanying website with examples now exists. There has also been other updates, but I do not want to mention them all.

Also, OpenPop.NET's license has been changed from LGPL to Public Domain (aka, no restrictions). This I think is a major improvement for commercial users.

like image 186
foens Avatar answered Sep 23 '22 11:09

foens