4.4BSD/usr/src/contrib/mh-6.8/miscellany/mhe/mh-send.ml

;  This autoloaded file implements the "m" command of mhe. We call "comp" to
;  compose the message into buffer "draft", and then when we are ready to
;  send it we call "send" to do the evil deed.
(defun 
    (&mh-send actn exfl sm
	(save-window-excursion 
	    (&mh-save-killbuffer)
	    (message "Composing a message...") (sit-for 0)
	    (error-occured 
		(unlink-file (concat mh-path "/draft")))
	    (pop-to-buffer (concat "+" mh-folder))
	    (setq sm mode-line-format)
	    (delete-other-windows)
	    (pop-to-buffer "draft") (erase-buffer)
	    (if (file-exists
		    (concat mh-path "/components"))
		(insert-file (concat mh-path "/components"))
		(insert-file (concat mh-progs "/components"))
	    )
	    (write-named-file (concat mh-path "/draft"))
	    (local-bind-to-key "exit-emacs" "\\")
	    (mail-mode) (header-line-position)
	    (sit-for 0) (setq exfl 0)
	    (while (= exfl 0)
		   (error-occured
		       (save-window-excursion
			   (pop-to-buffer (concat "+" mh-folder))
			   (setq mode-line-format
				 "{%b}	^X^C exits to top level  %M")
			   (pop-to-buffer "draft")
			   (setq mode-line-format
				 (concat "{%b}	%[%p of "
					 mh-path "/draft%]	"
					 "(^X^C to exit)  %M"))
			   (&mh-restore-killbuffer)
			   (recursive-edit)
			   (&mh-save-killbuffer)
			   (setq mode-line-format
				 (concat "{%b}	%[%p of "
					 mh-path "/draft%] %M"))
			   (pop-to-buffer (concat "+" mh-folder))
			   (setq mode-line-format " ")
		       )
		   )
		   (setq actn (get-response "Ready to send. Action? (m, q, e, or ?) " "mMqQeE\" 
				  "m: mail it, q: quit, e: resume editing, ?: this msg."))
		   (if (= actn 'm')
		       (progn (message "Sending...") (sit-for 0)
			      (write-current-file)
			      (setq buffer-is-modified 0)
			      (send-to-shell 
				  (concat mh-progs "/send -noverbose "
					  mh-path "/draft"
				  ))
			      (setq exfl 1)
		       )
		       (= actn 'q')
		       (progn
			     (&mh-restore-killbuffer)
			     (pop-to-buffer (concat "+" mh-folder))
			     (delete-other-windows)
			     (setq mode-line-format sm)
			     (error-message "Message not sent; its text remains in buffer 'draft'")
		       )
		   )
	    )
	)
	(&mh-restore-killbuffer)
	(pop-to-buffer (concat "+" mh-folder)) (delete-other-windows)
	(setq mode-line-format sm)
	(pop-to-buffer "draft") (previous-window)
    )
)