Email you receive on a daily basis falls into two primary categories:
- A. Mail written by someone on a Mail User Agent (MUA), like iOS Mail or Gmail.
- B. Mail written by a computer program, normally transactional email.
Almost every web application you use on a regular basis will send you email when different transactions occur. If someone adds you as a friend on Facebook, you’ll likely receive an email about it sent by Facebook’s backend server.
And unlike category A, the information contained in a lot of email from category B also exists in a web application you can access with a web browser. Chances are good you could visit facebook.com and read the notification (and even act on it) before you check your inbox, yet that same message will still be waiting for you in your inbox in an unread state.
You’ve probably found yourself reading chat email digests of messages you’ve already read in the original chat client (ironically, this even happens with Gmail’s own Google Talk). You might have even read emails about “new” pull requests you actually merged on Github hours ago.
The solution is actually a quite simple one: enable applications to dismiss email they’ve sent in the past, once they know that the email is no longer relevant.
A rough implementation could be as follows:
- Outgoing transactional email would contain a dismissal id in the form of a proprietary SMTP header:
- Once the information is “read” from the website or application, a new email is emitted with a custom format
For example, if I’m sending Guillermo (
email@example.com) a notification email I would include a header like this:
If Guillermo then goes to the website and reads the notification, I would now send a new empty email to
read(rauchg, 55765639d46104a0de)@gmail.com. The email provider can then decide what to do with this amazing information. Gmail could archive those emails for you. Non-compliant email servers will simply bounce the email, making this completely “backwards compatible”.