another email issue! i have my form set up to reject if email message is less than a certain number of characters. i am receiving emails in which the message appears empty but contains nonprintable characters. how can i test for this and remove the nonprintable characters from the message. here's the parse sub:
# --------------------------------------------------------
my (%in);
my ($buffer, $pair, $name, $value,$s);
PAIR: foreach $name ($query->param()) {
@value = $query->param("$name");
$value = join '~~', @value;
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
if ($value eq "---") { next PAIR; }
if ($value eq "http://") { next PAIR; } # Removes default beginning of URLs
unless ($value =~ /\S+/) { next PAIR; } # 01/29/2017
$in{$name} = $value;
}
return %in;
}
Code:
sub parse_form { # --------------------------------------------------------
my (%in);
my ($buffer, $pair, $name, $value,$s);
PAIR: foreach $name ($query->param()) {
@value = $query->param("$name");
$value = join '~~', @value;
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
if ($value eq "---") { next PAIR; }
if ($value eq "http://") { next PAIR; } # Removes default beginning of URLs
unless ($value =~ /\S+/) { next PAIR; } # 01/29/2017
$in{$name} = $value;
}
return %in;
}