On Tue, 6 Nov 2001, Tom Servo wrote:

> Hello all.   I'm writing an app that opens a pipe to sendmail, which if
> memory serves, forks off a child process of apache to do the pipe, then
> exits as soon as it's finished.
>
> I was doing this with MIME::Lite, and it's been working absolutely
> splendidly on Linux and on Solaris 7.   However, on Solaris 8 (and I don't
> know if this is related to the OS or not) it gives me all sorts of
> problems.   Namely, this started after checking the return code on a
> MIME::Lite object called $msg after calling the send method.   It usually
> returns a 1 on success, but on the new box it was returning 0, despite the
> fact that the e-mails were actually going out.
>
> I ended up writing a test on that just opens a filehandle to |
> /usr/lib/sendmail -t -ei -eom, then printing to the filehandle, and
> closing the filehandle.   If memory serves, it's almost impossible to get
> something accurate out of this statement in mod_perl:
>
> open(SENDMAIL, "| /usr/lib/sendmail -t -ei -eom") or do_something();
> As that just reports on whether or not an apache child process was able to
> spawn, not whether it was actually able to open the pipe to sendmail.
>
> So, that runs fine, then the print works as I actually get the e-mails
> it's trying to send, but this bit of code:
>
> close(SENDMAIL) or print STDERR "Filehandle close failed: $!";
>
> spits out: "Filehandle close failed: No child processes"
>
> Any ideas what is causing this?   Like I said, the mail goes out fine, but
> it makes it pretty difficult to check the return code since it's always
> coming back false.

Shouldn't you check $? instead?



Jie

Reply via email to