Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re: Sendmail Problem

by blue_cowdawg (Monsignor)
on Jan 04, 2013 at 19:03 UTC ( #1011702=note: print w/replies, xml ) Need Help??

in reply to Sendmail Problem

Dear Monk,
Please learn to use code tags to format your code for readability when posting to Perl Monks.

My other comment would be to check exactly what you are sending to sendmail in our pipe. Another comment would be to suggest you use Mail::Send or other modules to send your mail.

Another thought would be why are you not using CGI to process your CGI input? Makes life a lot easier.

Just some random thoughts...

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

Replies are listed 'Best First'.
Re^2: Sendmail Problem
by spacebar (Beadle) on Jan 04, 2013 at 20:38 UTC
    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\"; 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"; } }
          $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

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1011702]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (3)
As of 2018-02-21 01:58 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (274 votes). Check out past polls.