Gurus,
 
I've been having this problem in various permutations throughout my Perl
life. For this particular function, I set $confirm_counter to 1. Then I use
a foreach loop to send email to multiple recipients. Within the foreach
loop, I increment $confirm_counter by using $confirm_counter++. I then use
the value of $confirm_counter as a test for an if conditional. If the
counter is one, then a confirmation email will be sent to the person who
submitted the form. If not, the confirmation email will be skipped. This is
to prevent any user from receiving more than one confirmation email.
However, it seems that $confirm_counter is not being incremented and the
user will receive as many as 7 email confirmations. Any ideas? I'm enclosing
the code in question below.
 
 
sub send_mail {
 
  #Camilo experiments here
  my $confirm_counter = "1";
  @selected_recipients = ($Form{recipient0}, 
  $Form{recipient1}, $Form{recipient2}, 
  $Form{recipient3}, $Form{recipient4}, 
  $Form{recipient5}, $Form{recipient6});
  my $recipient_counter = "";
     foreach $recipient_counter(@selected_recipients){
     @mailPrefix = split (/@/,$recipient_alias{$recipient_counter});
     if ($mailPrefix[0]){
  if (($Form{joinPreview} eq "yes") or ($Form{newsletterSend} eq "yes")){
   $subject = "Sneak Preview Form Inquiry";
   $skip = "no";
  }
  else {
   $subject = "WWW Legacy Form Inquiry";
   $skip = "yes";
  }
 
my ($date, $Field_Order) = @_;
 
my $dashes = '-' x 75;
 
my $realname = $Config{realname};
  if (defined $realname) {
    $realname = ' (' . cleanup_realname($realname) . ')';
  } else {
    $realname = $Config{realname} = '';
  }
 

  if ($secure) {
    $subject = substr($subject, 0, 256);
  }
 
  my $email = $Config{email};
  unless (defined $email and check_email($email)) {
    $email = 'nobody';
  }
 
  if ("$Config{recipient}$email$realname$subject" =~ /\r|\n/) {
    die 'multiline variable in mail header, unsafe to continue';
  }
 
  my $xheader = '';
  if ( $secure and defined (my $addr = remote_addr()) ) {
    $addr =~ /^\[?([\d\.]+)\]?$/ or die "bad remote addr [$addr]";
    $xheader = "X-HTTP-Client: [$1]\n"
             . "X-Generated-By: NMS FormMail.pl v$VERSION\n";
  }
  
  if ( $confirm_counter = "1"){
    if ( $send_confirmation_mail ) {
      open_sendmail_pipe(\*CMAIL, $mailprog);
      print CMAIL $xheader, "To:
$email$realname\n$confirmation_text$confirm_counter";
      close CMAIL;
    }
  }
    ++$confirm_counter;
 
  open_sendmail_pipe(\*MAIL, $mailprog);
   print MAIL $xheader, <<EOMAIL;
To: $recipient_alias{$recipient_counter}
From: $email$realname
Subject: $subject 
 
Below is the result of your feedback form.  It was submitted by
$Config{realname} (${\( $Config{email}||'' )}) on $date
$dashes $subject
 
EOMAIL
 
  if ($Config{print_config}) {
    foreach (@{$Config{print_config}}) {
      print MAIL "$_: $Config{$_}\n\n" if $Config{$_};
    }
  }
 
  foreach (@$Field_Order) {
    my $val = (defined $Form{$_} ? $Form{$_} : '');
    if ($Config{'print_blank_fields'} || $val !~ /^\s*$/) {
      print MAIL "$_: $val\n\n";
    }
  }
 
  print MAIL "$dashes\n\n";
 
  foreach (@{$Config{env_report}}) {
    print MAIL "$_: ", strip_nonprintable($ENV{$_}), "\n" if $ENV{$_};
  }
 
  close (MAIL) || die "close mailprog: \$?=$?,\$!=$!";
}
&set_counter($skip, $mailPrefix[0]); 
} 
}

#!/usr/local/bin/perl
print <<'         EOF'
         Camilo Gonzalez
         Web Developer
         Taylor Johnson Associates        
          [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> 
          www.taylorjohnson.com <http://www.taylorjohnson.com/> 
         EOF


 

Reply via email to