I've been asked to write a Windows service in C# to periodically monitor an email inbox and insert the details of any messages received into a database table.
My instinct is to do this via POP3 and sure enough, Googling for ".NET POP3 component" produces countless (ok, 146,000) results.
Has anybody done anything similar before and can you recommend a decent component that won't break the bank (a few hundred dollars maximum)?
Would there be any benefits to using IMAP rather than POP3?
How about WCF? It's free.
If you have an Exchange server: http://msdn.microsoft.com/en-us/library/bb397812.aspx
an example for pop3: http://bartdesmet.net/blogs/bart/archive/2006/09/13/4417.aspx
IMAPX2 is the best. Using IMAP you can control the folders in a mail server, a thing you wouldn't be able to do using POP. IMAPX is an open source code you can look into, and is free to use.
IMAPX is straight forward and reliable.
I would recommend AdvancedIntellect. There are components for POP3 and IMAP (ASPNetPOP3 and ASPNetIMAP). Good quality and very responsive support - I remember receiving replies to my questions on a weekend.
With IMAP protocol you can access sub folders, and set message status (seen/unseen), also you can use IDLE feature for instant notifications.
Mail.dll includes POP3, IMAP, SMTP components with SSL support and powerful MIME parser:
Please note that this is commercial product that I've created.
You can download it at https://www.limilabs.com/mail
Lumisoft is open-source and includes IMAP and POP clients (among other stuff). I've been using them for years with no problems.
You can do this using MailBee.NET Objects: http://www.afterlogic.com/products/net-email-components
While I'd recommend to use IMAP indeed, particularly since it offers IDLE support mentioned here already, you could do the same with POP3. There's a brief description of both the approaches, and a complete sample for IMAP IDLE scenario:
http://www.afterlogic.com/wiki/Getting_notifications_about_new_messages_in_mailbox_%28IMAP_IDLE_and_polling%29
Please note that I am affiliated with AfterLogic, and I'll be pleased to assist you if you need any help, check Request Support option at our website.