とりあえず、汎用のメール送信CGIでもつくっとこかな、と思って作りました。 かなり汎用性を持たせてあるので、各種アンケートなどにもそのまま使えます。
ページ下部のアンケートも、この mailto.cgi を使ってます。
#!/bin/perl
require './jcode.pl';
$MAIL_TO = "xxx\@xxx.example.com";
$MAIL_FROM = "xxx\@xxx.example.com";
$addr = $ENV{'REMOTE_ADDR'};
$host = $ENV{'REMOTE_HOST'};
if (($host eq "") || ($host eq $addr)) {
$ENV{'REMOTE_HOST'} = gethostbyaddr(pack("C4", split(/\./, $addr)), 2);
}
foreach $env (keys %ENV){
$log_all .= "$env = $ENV{$env}\n";
}
$log_all .= "\n";
# PARSE INPUT
if ($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} else {
$buf = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $buf);
foreach $pair (@pairs){
($key, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode'convert(*value, 'jis');
$ARG{$key} = $value;
push(@ARG_LIST, $key);
}
$content = <<"CONTENT";
REMOTE_HOST: $ENV{'REMOTE_HOST'}
REMOTE_ADDR: $ENV{'REMOTE_ADDR'}
HTTP_ACCEPT: $ENV{'HTTP_ACCEPT'}
HTTP_USER_AGENT: $ENV{'HTTP_USRE_AGENT'}
HTTP_REFERER: $ENV{'HTTP_REFERER'}
CONTENT
foreach $item (@ARG_LIST){
$content .= "$item: $ARG{$item}\n";
}
use Mail::Sendmail;
$mail{'Sender'} = $MAIL_FROM;
$mail{'Subject'} = $ARG{'Subject'} if ($ARG{'Subject'});
$mail{'To'} = $MAIL_TO;
$mail{'Body'} = $content;
$mail{'Content-type'} = "text/plain; charset=ISO-2022-JP";
sendmail(%mail);
$content =~ s/\n/
\n/g;
print "Location: $ENV{'HTTP_REFERER'}\n\n";
リンクは歓迎です。断りなく、自由に行っていただいてかまいません。