For our product, we built our own email alert system using Amazon Simple Email Services. We did this for the following reasons:
- The native Salesforce alerts are spotty. For some reason it seems that we only get an exception email like 20% of the time.
- We can add as much info as we need to the email, so we can include debug info that may not be in the out-of-the-box stack trace.
- Amazon SES is extremely cheap and I think you get a certain amount for free.
- Emails sent this way do not count against a customer's daily email limits.
Then we just have some email rules set up to route the emails appropriately as they come in. Since you have full control over the email, it is easy to add tags to parse and set up email rules for.
We did encounter a couple of gotachas. For example, you need to make sure you send the email from a future method. This lets you get around Salesforce rules that don't let you do a callout after you have performed a DML operation. Basically you build the email first, the serialize it, and send it to the future method as a string, deserialize, and send. You also need to have a fallback option in case you are in a method that does not allow callouts or future methods. In that case we generally send via the native Salesforce email method.
Hopefully this helps you out!