Category: | |
Author/Contact Info | mikko_h@beer.com |
Description: | This is basicly a form-to-email script that uses format declarations as "templates" to format the output to mail. |
#!/usr/bin/perl -Tw use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); use FileHandle; $ENV{PATH} = '/usr/sbin/'; my $q = new CGI; my $mail_prog = '/usr/sbin/sendmail'; # Get the format to be used my $mail_format; if($q->param('mail_format')){ $mail_format = $q->param('mail_format'); $q->delete('mail_format'); } # If none specified, use default else{ $mail_format = 'default'; } # Grab headers for mail and delete em so they won't # show up in the body when using default my $recipient = $q->param('recipient'); $q->delete('recipient'); my $subject = $q->param('subject'); $q->delete('subject'); my $from = $q->param('from'); $q->delete('from'); my $redirect = $q->param('redirect'); $q->delete('redirect'); open(MAIL,"|$mail_prog -t") || die ("Cannot open sendmail: $!\n"); my @all_params; if($mail_format eq 'default'){ foreach($q->param()){ $q->param_fetch("$_")->[0] =~ s/</</g; push(@all_params,$_); } # Invoke the default format for MAIL formatDefault(\@all_params,*MAIL{IO}); } else{ foreach($q->param()){ $q->param_fetch("$_")->[0] =~ s/</</g; push(@all_params,$q->param_fetch("$_")->[0]); } # Invoke the user-specified format &selectFormat($mail_format,*MAIL{IO},\@all_params); } print MAIL "To: $recipient\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; write(MAIL); close(MAIL) || die ("Cannot close MAIL: $!\n"); print $q->redirect("http://$redirect"); # The default format sub formatDefault{ my $params=shift; my $fh=shift; my $time=localtime(); format_name $fh "default"; format_top_name $fh "default_top"; format default_top= ------------------------------------------------------------ Default Format @>>>>>>>>>>>>>>>>>>>>>>>>>>>>> $time ------------------------------------------------------------ . format default= @* &formatDefaultParams($params); . } sub formatDefaultParams{ my $incoming = shift; my $outgoing; foreach(@$incoming){ $outgoing .= "$_ : ". $q->param("$_") . "\n"; } return($outgoing); } # The other formats sub selectFormat{ my $format = shift; my $fh = shift; my $params = shift; my $time = localtime(); format_name $fh "$format"; format_top_name $fh "${format}_top"; format example_top= +----------------------------------------------------------+ | An example format @>>>>>>>>>>>>>>>>>>>>>>>>>>>>> | $time +----------------------------------------------------------+ . format example= | Something user said: | Yada yada blah blah | | @<<<<<<<<<<<< | ^<<<<<<<<<<< | $params->[0], $params->[1] +------------------------+ ^<<<<<<<<<<< | $params->[1] | ..and so on | | +------------------------+---------------------------------+ . # Insert own formats here.. } |
|
---|
Replies are listed 'Best First'. | |
---|---|
RE: formattedmail.pl
by mikkoh (Beadle) on May 05, 2000 at 12:17 UTC |
Back to
Code Catacombs