i'd either add a dialog (with default selected button being Cancel) or replace the Send button with a Preview button, which would show the message the same way you read a message, and there you would have the Send button.
Letting people recover from uncommon mistakes is better than ham-fisted and annoying mechanisms that attempt to prevent the mistake.
It probably works for the impatient that is hitting ctrl+enter (or whatever shortcut) too soon by muscle memory. but then it should be called delayed send to not give a false mental model to the user.
the current model is preventing the real mistakes for probably 1/10 of the cases it's needed. and enticing less care and probably bumping the rate in the end.
If a dialog or preview comes up for every message you send, you just develop a new habit for sending mail (press the send button, then press the send button again on the dialog / preview). If anything, it just creates more of a hassle for the user.
The undo button is for that 'Oh crap!' moment, when your auto-pilot lead you astray.