Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Sendmail Problem

by texafud (Initiate)
on Jan 04, 2013 at 18:52 UTC ( [id://1011698]=perlquestion: print w/replies, xml ) Need Help??

texafud has asked for the wisdom of the Perl Monks concerning the following question:

My whole form works perfectly, but I never receive an email. Any chance anybody here can see the problem with it>
#!/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-9][a-fA-F0-9])/pack("C", hex($1))/eg; $FORM{$name} = $value; } open(MAIL,"|/usr/sbin/sendmail -t"); $sendto="mail\@qtscreen.com"; print MAIL "To: $sendto\n"; # Don't forget to escape this @ symbol +! print MAIL "From: $FORM{Customer}\n"; print MAIL "Reply To: $FORM{E-Mail}\n"; print MAIL "Phone: $FORM{Phone}\n"; print MAIL "Subject: Web Submitted Order from $FORM{Contact} \n\n" +; print MAIL "Printing Information: $FORM{OrderInfo}\n"; print MAIL "Print Location: $FORM{printloc}\n"; print MAIL "Follow Up Info: $FORM{Followup}\n"; close (MAIL);

Replies are listed 'Best First'.
Re: Sendmail Problem
by blue_cowdawg (Monsignor) on Jan 04, 2013 at 19:03 UTC

    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
      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"; } }
            $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
Re: Sendmail Problem
by mhearse (Chaplain) on Jan 04, 2013 at 19:14 UTC
    Don't have the time to translate your code. I highly recommend using MIME::Lite. It is the bellwether for sending email with Perl.
Re: Sendmail Problem
by Anonymous Monk on Jan 04, 2013 at 23:38 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1011698]
Approved by blue_cowdawg
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (6)
As of 2024-03-19 10:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found