Send an Email at a future date
Solution 1:
Unfortunately there is no way to do this in Gmail.
If you have Outlook 2007 available create a new mail and click on the Options tab. There should be a button in the More Options
group called Delay Delivery
. Clicking that will allows you to choose when your mail is sent. Outlook has to be running at your selected time, so don't just close it and forget about it! This option may be available in earlier versions, but I don't have them installed so I can't check to see where they are
If you don't have access to Outlook, Thunderbird can do this, just go to File > Send Later (or press Ctrl + Shift + Enter)
If you must use a web-based program, you can use something like FutureMail, though I would test them first to make sure you're not going to be sending ad-filled email which looks like it's being sent from a strange email address.
If all else fails there is always the manual way - write the email, save it in your drafts, and then when it's time to send it, manually do so.
Solution 2:
If you have access to a *nix system, use the "at" command along with the "mail" command to schedule a job doing your e-mail send (great for birthday e-mails, etc!).
Solution 3:
TimeCave looks like it might do that for you. From their "about" page:
The idea is simple: drop an email message into Time Cave and tell it when to come out. It'll stay there for as long as you'd like, within reason. (We wouldn't want stalactites to dissolve it.) So for days, weeks, months, or even years, Time Cave will hold onto your message. Once the message's time comes, it's speedily sent on its way back toward you (or whomever you addressed it to).
(emphasis mine)
DeferredSender is another service that should do what you want.