#!/usr/bin/perl use strict; use CGI qw(:standard); use Mail::Sendmail; my $err; my %data={subj=>'Just a message',msg=>'Replace me'}; sub validate() { my @fields=qw/to subj msg/; my $e; my $field; for $field (@fields) { my $val=param $field; ($val and ($data{$field}=$val)) or $e=1; } $e and do { $err.="Form validation failed"; return undef;}; return 1; } sub form() { validate unless %data; start_form(-method=>"post"). "To: ".textfield(-name=>'to',-value=>$data{to}).br. "Subject: ".textfield(-name=>'subj',-value=>$data{subj}).br. "Message:".br.textarea(-name=>'msg',-default=>$data{msg},-rows=>15,-cols=>75).br. submit('send'); } sub procform() { return undef unless param; return form unless validate; my %mail = ( From => '"Test mailer system" ', To => $data{to}, Cc => '"John Brown" , "Lucy Brown" ', Bcc => '"Joe Doe" ', Subject => $data{subj}, Message => $data{msg}, Smtp => 'scriptmail.intermedia.net' ); return "Cannot send mail ($Mail::Sendmail::error ($Mail::Sendmail::log))\n" unless ( sendmail(%mail) ); return "Mail was successfully sent\n"; } sub go() { my $fout; $fout=procform || form; print header,start_html(-title=>'Mail system',-bgcolor=>'white'),h1('MAIL'), $err && font({-color=>'red'},$err), $fout, end_html; } go;