title: Application Email Architecture
body: <p>I've inherited an ASP.NET website written in c# using an mssql 2k8 database that is sending emails based on an insert into a message table via a trigger using database mail :|  One of any failures and too many things rollback, aren't logged and no email is sent...</p>
  
  <p>What a mess.  I've written a few email subsystems in the past and I thought I'd ask for input before starting a rewrite here.  What are the best practices for queuing/sending email in a Microsoft environment?  Should I be pushing emails to a queue, from there pulling, sending, logging?  DB Email seems like a fail.  Is the queue managed in SQL server?  Does SQL Server call a C# app?  If an email send fails, what's a good approach for recovery?</p>
  
  <p>Thanks for any insight!</p>