Can you do M-x trace-function-background RET call-process-region RET,
then run the code, then look at the *trace-output* buffer to see what
call-process-region returns?
1 -> call-process-region: start=1 end=77 program="/usr/sbin/sendmail" delete=nil buffer=0 display=nil
args=("-oi" "-oem" "-odb" "-t")
1 <- call-process-region: nil
According to the docstring, call-process-region doesn't return the exit
value, because buffer=0.
This is because mail-interactive is nil by default.
Duh! Thank you for tracking this down. I've changed the default of
mail-interactive with the patch below.
--- sendmail.el.~1.314.~ 2008-05-11 17:49:35.000000000 -0400
+++ sendmail.el 2008-06-06 01:58:09.000000000 -0400
@@ -114,7 +114,11 @@
:group 'sendmail)
;;;###autoload
-(defcustom mail-interactive nil
+(defcustom mail-interactive t
+ ;; We used to use a default of nil rather than t, but nowadays it is very
+ ;; common for sendmail to be misconfigured, so one cannot rely on the
+ ;; bounce message to be delivered anywhere, least of all to the
+ ;; user's mailbox.
"Non-nil means when sending a message wait for and display errors.
nil means let mailer mail back a message to report errors."
:type 'boolean