D.4 Confirmation before sending

To protect yourself from sending messages too hastily, you can add a final confirmation, which you can of course make as elaborate as you wish.

(defun confirm-empty-subject ()
  "Require confirmation before sending without subject."
  (let ((sub (message-field-value "Subject")))
    (or (and sub (not (string-match "\\`[ \t]*\\'" sub)))
        (yes-or-no-p "Really send without Subject? ")
        (keyboard-quit))))

(add-hook 'message-send-hook #'confirm-empty-subject)

If you always want to be asked for for confirmation, set message-confirm-send to non-nil so the question “Send message?” is asked for confirmation.