http://www.perlmonks.org?node_id=1011714


in reply to Re: Sendmail Problem
in thread Sendmail Problem

Try it like this to see sendmail messages and contents of variables:
#!/usr/bin/perl use CGI::Carp qw(fatalsToBrowser); # The following accepts the data from the form and splits it into # its component parts if ($ENV{'REQUEST_METHOD'} eq 'POST') { read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} ); @pairs = split( /&/, $buffer ); foreach $pair ( @pairs ) { ( $name, $value ) = split( /=/, $pair ); $value =~ tr/+/ /; $value =~ s/%(a-fA-F0-9a-fA-F0-9)/pack("C", hex($1))/eg; $FORM{$name} = $value; } $child_pid = open (MAIL, "|/usr/sbin/sendmail -v"); # use -v if ( not defined( $child_pid ) ) { print "**Error: Could not open pipe to sendmail.\n"; } $sendto = "mail\@qtscreen.com"; print MAIL "To: $sendto\n"; print "To: $sendto\n"; # Don't forget to escape this @ symbol! print MAIL "From: $FORM{Customer}\n"; print "From: $FORM{Customer}\n"; print MAIL "Reply To: $FORM{E-Mail}\n"; print "Reply To: $FORM{E-Mail}\n"; print MAIL "Phone: $FORM{Phone}\n"; print "Phone: $FORM{Phone}\n"; print MAIL "Subject: Web Submitted Order from $FORM{Contact} \n\n"; print "Subject: Web Submitted Order from $FORM{Contact} \n\n"; print MAIL "Printing Information: $FORM{OrderInfo}\n"; print "Printing Information: $FORM{OrderInfo}\n"; print MAIL "Print Location: $FORM{printloc}\n"; print "Print Location: $FORM{printloc}\n"; print MAIL "Follow Up Info: $FORM{Followup}\n"; print "Follow Up Info: $FORM{Followup}\n"; unless (close MAIL) { print "**Error: Could not close pipe to sendmail.\n"; } }

Replies are listed 'Best First'.
Re^3: Sendmail Problem
by blue_cowdawg (Monsignor) on Jan 04, 2013 at 20:50 UTC
        $child_pid = open (MAIL, "|/usr/sbin/sendmail -v"); # use -v

    That just ain't gonna work son....

    You need to specify recipient addresses on the command line or add the "-t" option.

    As stated before, you can save yourself a lot of problems by not reinventing the wheel and using the likes of Mail::Send, MIME::Lite and friends. Using CGI to parse your incoming form is a good ideas as well. You're already using CGI::Carp and CGI is part of the core Perl distro.


    Peter L. Berghold -- Unix Professional
    Peter -at- Berghold -dot- Net; AOL IM redcowdawg Yahoo IM: blue_cowdawg