Have you ever hit send and immediately realised you weren’t ready to send it yet? Us too.

We've been promising for some time that the new JMAP protocol would enable powerful new email features, and now we're making good on our word.

Fastmail are pleased to announce that from today, you have 15 seconds to hit “undo” after sending an email from inside the Fastmail web interface or our apps.

You do not need to do anything to enable this behavior. We believe most people will prefer the ability to undo sending, so we have made it the default.

If you want messages to send immediately instead, you can change this on the Settings → Preferences page. Click “Show Advanced Preferences” at the bottom, then in the “Compose & Reply” section change “Undo send” from “Delay sending messages for 15 seconds so I can undo” to “Send message immediately”.

Settings-undosend-copy@2x-100

This new feature is available to users on all of our plans.

Technical detail

We have implemented undo by setting the holdFor parameter on EmailSubmission objects as documented in the SMTP FUTURESEND extension. The email is stored in the Cyrus IMAP server until the timer expires. During this time, the EmailSubmission object can be updated to change the undoStatus field from pending to canceled, which stops the send from happening. Otherwise, once the time expires the server sends the message and sets the undoStatus field to final, after which any further updates will be rejected by the server.

In order to discover that the server supports it, the client checks the maxDelayedSend field in the capabilities object for the submission feature.

Our client actually sends a value of 20 in the holdFor field, just so that if you click at exactly 15 seconds, it's still very likely that the undo will be processed in time to stop the email sending!

This is entirely built on standard JMAP, and one of many benefits of the expressive new protocol.