In Microsoft Outlook, you can specify a delivery time for every message you send.
To set a date and time before which a message must not be sent in Outlook:
As soon as the time you have set for delivery is reached, Outlook will initiate delivery of the message from the Outbox folder.
It is as if you had kept the message open and clicked Send right then. Other than in the email's text—you obviously not knowing about something that happened after you wrote the message—, there will be no trace of your clicking Send earlier than that time.
If Outlook is not open and running at the time a message reaches its do-not-deliver-before time, that message will not be delivered at the specified time.
Outlook will send the message immediately the next time you launch it. It will be as if you clicked Send right when you started Outlook.
If you are not connected to the net at the time of scheduled delivery, Outlook will try to but fail to deliver the email at the specified time.
You will see a Outlook Send/Receive Progress error window.
You can use the Send All command (on the Send/Receive ribbon) to manually re-initiate transfer. Outlook will also automatically try to send again, though. The message will appear to be sent when Outlook actually can deliver it.
Note that the same is true if Outlook is set to working offline at the scheduled time of delivery. Outlook will then automatically send as soon as the account used for the message is working online again.
Before a scheduled message is delivered by Outlook, it sits in the Outbox folder for the account used to send it.
To edit a scheduled email or change its delivery time:
To schedule messages more flexibly and include automatic attachments, too, you can try a number of specific Outlook email scheduling add-ons or resort to a email scheduling service.
(Updated March 2016, tested with Outlook 2016)