Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chriss Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Perl help - how to modify sendmail

Status
Not open for further replies.

mountainfair

Programmer
Joined
Feb 6, 2007
Messages
1
Location
US
I am a total beginner to perl.

I want to send a confirmation email to me and to the person that submitted the form, with the body of the confirmation email having the name of the input and then the input, like this:

Name: john
email: asdf@adsf.com
age: 24

etc.

Instead of the current:

john
asdf@asdf.com
24

etc.

Right now, I have gotten as far as getting a confirmation email sent to me (but not the submitted email), and no labels for each of the fields in the body of the email.

Can anyone help?

I have added this to my existing script that tracks user signups (I have included the relevant part of the code that was already there):

Code:
$input = <STDIN>; chomp; chomp;

@fields = split("&",$input);

foreach $one (@fields) 
{
  ($name, $value) = split ("=",$one);
  $name =~ s/\+/ /g;
  $name =~ s/%(..)/pack("c",hex($1))/ge;
  $value =~ s/\+/ /g;
  $value =~ s/%(..)/pack("c",hex($1))/ge;

  $value =~ s/\t/ /g; # strip out tab DB field-separators from the data
  $value =~ s/\n//g;  # and newline record-separators.

  # if non-unique names are present, catch here & store 
  # (e.g. checkbox/select fileds) else below...

  $vararray{"$name"}=$value;


# email confirmation added by Mountainfair

  $record2 = '';# initialize
     
    # this next bit is to control the order of fields in the log...
    @fieldlist = ('handle','nickname',
          'age','email','phone','training','address','bestprecontact','skills',
          'certifications','find','emergency','comments');
    foreach $field ( @fieldlist ) {
      $record2 .= $vararray{"$field"}."\n";
    } # end foreach
    $record2 .= localtime(time); # timestamp for later data checks


$mailprog = '/usr/bin/sendmail';

open(MAIL,"|$mailprog -t");

print MAIL "To: test\@test.org\n";
print MAIL "From: Volunteer Coordinator <volunteer\@test.org>\n";
print MAIL "Subject: Volunteer Confirmation\n";
print MAIL "This is the contents of your Volunteer registration:\n\n$record2\n\n";
close (MAIL);


# end email confirmation added by Mountainfair
 
see if this works, not really much different than your code:

Code:
[black][b]use[/b][/black] [green]strict[/green][red];[/red]
[black][b]use[/b][/black] [green]warnings[/green][red];[/red]
[black][b]chomp[/b][/black][red]([/red][black][b]my[/b][/black] [blue]$input[/blue] [black]=[/black] [black]<[/black][black]STDIN[/black][black]>[/black][red])[/red][red];[/red]
[black][b]my[/b][/black] [blue]@fields[/blue] [black]=[/black] [black][b]split[/b][/black][red]([/red][red]/[/red][purple]&[/purple][red]/[/red][black],[/black][blue]$input[/blue][red])[/red][red];[/red]
[black][b]my[/b][/black] [blue]%vararray[/blue] [black]=[/black] [red]([/red][red])[/red][red];[/red]
[olive][b]foreach[/b][/olive] [black][b]my[/b][/black] [blue]$one[/blue] [red]([/red][blue]@fields[/blue][red])[/red][red]{[/red]
  [black][b]my[/b][/black] [red]([/red][blue]$name[/blue][black],[/black] [blue]$value[/blue][red])[/red] [black]=[/black] [black][b]split[/b][/black] [red]([/red][red]/[/red][purple]=[/purple][red]/[/red][black],[/black][blue]$one[/blue][red])[/red][red];[/red]
  [blue]$name[/blue] [black]=~[/black] [red]s/[/red][purple][purple][b]\+[/b][/purple][/purple][red]/[/red][purple] [/purple][red]/[/red][red]g[/red][red];[/red]
  [blue]$name[/blue] [black]=~[/black] [red]s/[/red][purple]%(..)[/purple][red]/[/red][purple]pack("c",hex([blue]$1[/blue]))[/purple][red]/[/red][red]ge[/red][red];[/red]
  [blue]$value[/blue] [black]=~[/black] [red]s/[/red][purple][purple][b]\+[/b][/purple][/purple][red]/[/red][purple] [/purple][red]/[/red][red]g[/red][red];[/red]
  [blue]$value[/blue] [black]=~[/black] [red]s/[/red][purple]%(..)[/purple][red]/[/red][purple]pack("c",hex([blue]$1[/blue]))[/purple][red]/[/red][red]ge[/red][red];[/red]
  [blue]$value[/blue] [black]=~[/black] [red]s/[/red][purple][purple][b]\t[/b][/purple][/purple][red]/[/red][purple] [/purple][red]/[/red][red]g[/red][red];[/red] [gray][i]# strip out tab DB field-separators from the data[/i][/gray]
  [blue]$value[/blue] [black]=~[/black] [red]s/[/red][purple][purple][b]\n[/b][/purple][/purple][red]/[/red][purple][/purple][red]/[/red][red]g[/red][red];[/red]  [gray][i]# and newline record-separators.[/i][/gray]

  [gray][i]# if non-unique names are present, catch here & store[/i][/gray]
  [gray][i]# (e.g. checkbox/select fileds) else below...[/i][/gray]

  [blue]$vararray[/blue][red]{[/red][blue]$name[/blue][red]}[/red] [black]=[/black] [blue]$value[/blue][red];[/red]

  [gray][i]# email confirmation added by Mountainfair[/i][/gray]

  [black][b]my[/b][/black] [blue]$record2[/blue] [black]=[/black] [red]'[/red][purple][/purple][red]'[/red][red];[/red][gray][i]# initialize[/i][/gray]
     
  [gray][i]# this next bit is to control the order of fields in the log...[/i][/gray]
  [black][b]my[/b][/black] [blue]@fieldlist[/blue] [black]=[/black] [red]([/red][red]'[/red][purple]handle[/purple][red]'[/red][black],[/black][red]'[/red][purple]nickname[/purple][red]'[/red][black],[/black]
          [red]'[/red][purple]age[/purple][red]'[/red][black],[/black][red]'[/red][purple]email[/purple][red]'[/red][black],[/black][red]'[/red][purple]phone[/purple][red]'[/red][black],[/black][red]'[/red][purple]training[/purple][red]'[/red][black],[/black][red]'[/red][purple]address[/purple][red]'[/red][black],[/black][red]'[/red][purple]bestprecontact[/purple][red]'[/red][black],[/black][red]'[/red][purple]skills[/purple][red]'[/red][black],[/black]
          [red]'[/red][purple]certifications[/purple][red]'[/red][black],[/black][red]'[/red][purple]find[/purple][red]'[/red][black],[/black][red]'[/red][purple]emergency[/purple][red]'[/red][black],[/black][red]'[/red][purple]comments[/purple][red]'[/red][red])[/red][red];[/red]
  [olive][b]foreach[/b][/olive] [black][b]my[/b][/black] [blue]$field[/blue] [red]([/red] [blue]@fieldlist[/blue] [red])[/red] [red]{[/red]
     [blue]$record2[/blue] [black].[/black][black]=[/black] [red]"[/red][purple][blue]$vararray[/blue]{[blue]$field[/blue]}[purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
  [red]}[/red] [gray][i]# end foreach[/i][/gray]
  [blue]$record2[/blue] [black].[/black][black]=[/black] [black][b]localtime[/b][/black][red]([/red][black][b]time[/b][/black][red])[/red][red];[/red] [gray][i]# timestamp for later data checks[/i][/gray]
  [black][b]my[/b][/black] [blue]$mailprog[/blue] [black]=[/black] [red]'[/red][purple]/usr/bin/sendmail[/purple][red]'[/red][red];[/red]
  [black][b]open[/b][/black][red]([/red][black]MAIL[/black][black],[/black][red]"[/red][purple]|[blue]$mailprog[/blue] -t[/purple][red]"[/red][red])[/red] [black]or[/black] [black][b]die[/b][/black] [red]"[/red][purple]Can't open [blue]$mailprog[/blue]: [blue]$![/blue][/purple][red]"[/red][red];[/red]
  [black][b]print[/b][/black] [black]MAIL[/black] [red]"[/red][purple]To: test[purple][b]\@[/b][/purple]test.org[purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
  [black][b]print[/b][/black] [black]MAIL[/black] [red]"[/red][purple]From: Volunteer Coordinator <volunteer[purple][b]\@[/b][/purple]test.org>[purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
  [black][b]print[/b][/black] [black]MAIL[/black] [red]"[/red][purple]Subject: Volunteer Confirmation[purple][b]\n[/b][/purple][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
  [black][b]print[/b][/black] [black]MAIL[/black] [red]"[/red][purple]This is the contents of your Volunteer registration:[purple][b]\n[/b][/purple][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
  [black][b]print[/b][/black] [black]MAIL[/black] [red]"[/red][purple][blue]$record2[/blue][purple][b]\n[/b][/purple][purple][b]\n[/b][/purple][/purple][red]"[/red][red];[/red]
  [black][b]close[/b][/black] [red]([/red][black]MAIL[/black][red])[/red][red];[/red]
  [gray][i]# end email confirmation added by Mountainfair[/i][/gray]
[red]}[/red]

- Kevin, perl coder unexceptional! [wiggle]
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top