There are multiple use cases for this feature:
- delay delivery until the actual day of an event.
- send reminder emails to yourself.
- adjust to the timezone of a recipient to increase the likeliness to get read.
- avoid disclosing your working hours to correspondents.
- have a grace period to cancel an outgoing message before it leaves.
In the user interface, deferring the sending happens simply by choosing “Schedule_delivery” instead of “Send mail” in the Message menu, after composing a new message.
Since the actual sending is done by manitou-mdx, the user interface does not need to be open at the time of a delivery. This is an advantage over most desktop mail user agents implementing this functionality.
When a message is scheduled for future delivery, internally it has a specific status bit set (bit 10), along with an entry in the jobs_queue table.
In the list of messages, its status is associated to a clock icon: until it gets submitted to the mail system.
It’s also included by the “Sent mail” selector in the quick selection panel (which should probably be renamed “Outgoing mail”).
To cancel the submission or change its future date and time, the Message->Properties now has a “Scheduled” checkbox, and a “Send after” datetime field: