--- old 2013-02-27 19:53:00.000000000 +0100 +++ new 2013-02-27 19:57:03.000000000 +0100 @@ -6,6 +6,7 @@ (let ((errbuf (if mail-interactive (generate-new-buffer " sendmail errors") 0)) + err? (tembuf (generate-new-buffer " sendmail temp")) (multibyte enable-multibyte-characters) (case-fold-search nil) @@ -170,21 +171,27 @@ (exit-value (apply 'call-process-region args))) (cond ((or (null exit-value) (eq 0 exit-value))) ((numberp exit-value) + (setq err? t) (error "Sending...failed with exit value %d" exit-value)) ((stringp exit-value) + (setq err? t) (error "Sending...terminated by signal: %s" exit-value)) (t + (setq err? t) (error "SENDMAIL-SEND-IT -- fall through: %S" exit-value)))) - (or fcc-was-found - (error "No recipients"))) + (unless fcc-was-found + (setq err? t) + (error "No recipients"))) (if mail-interactive (with-current-buffer errbuf (goto-char (point-min)) (while (re-search-forward "\n\n* *" nil t) (replace-match "; ")) - (if (not (zerop (buffer-size))) - (error "Sending...failed to %s" - (buffer-substring (point-min) (point-max))))))) + (when (not (zerop (buffer-size))) + (setq err? t) + (error "Sending...failed to %s" + (buffer-substring (point-min) (point-max))))))) (kill-buffer tembuf) - (if (bufferp errbuf) - (kill-buffer errbuf))))) + (when (and (bufferp errbuf) + (not err?)) + (kill-buffer errbuf)))))