For the lost emails when sending problem,
My suggestion is to go at it in two steps.
First would be to save every message ready to send, and if it fails, not delete it from the draft directory or whatever the case will be. This means that the textbox input with whatever it contains upon clicking the send button gets saved. This will not help in cases where one types a long email for an hour and then the browser crashes for example and the email is lost. Lets call this step the "dumb save" method.
The next step we can call the "smart save" method, where there would be a bit of JS to look for pauses in typing or a simple 30 sec interval, and do an autosave with a timestamp. This way one can have multiple autosaves, that update each other and if anything happens in the long run, you still have the most recent draft available. This periodic save should also keep the session active longer while one is in compose mode, and eliminate the session timeout problem.
thoughts?
-- Robi