Options For Reliable Email Transfer in .NET
===

I’m currently working on an web application that sends emails. Actions taken place by a user in the browser create events which are passed to a secondary server which sends emails to users who have subscribed to these events.

The current implementation for sending emails is basically a home grown SMTP server. I think it was ported to C# from legacy system and it’s quite unreliable.

My requirements are to be able to send messages and also to know the delivery status of the messages. If they’re failing I’d like to know why and whether or not they’re in the process of retrying.

Ideally, I’d like to scrap the home grown SMTP server and use an open source solution.  I know that I can run an SMTP server (like hMailServer) on a machine and use .NET’s SmtpClient to connect and send messages. By itself, this isn’t going to give me much insight into the status of the messages.

It looks like with hMailServer you can use the COM API to query the server and get message statuses. Is this possible? Is this a valid approach?

Aside from what I’ve outlined above, are there any other options?

Thanks!
