アプリ版:「スタンプのみでお礼する」機能のリリースについて

FlashQ&A(サンプル作品集)の憲ちゃん様の
http://hfm-kenchan.com/Lesson/log_qa/D0703261.htm
Flash連動のフォームメールを使わせて頂いているのですが、
webform_flas01.cgiに、自動返信機能を追加したいと思っています。

sub sendmail {
~~省略~~}
をもう一つコピーして、片方の宛先と差出人の部分を逆にしたら、今度は送られてくる方のメールが届かなくなりました。

どなたかCGIに詳しい方是非教えて頂けないでしょうか?

使用環境はWindoesXP SP2 Flash8です。よろしくお願いします。

A 回答 (2件)

以下で多分平気だと思います。



sub sendmail {

if (!(open(OUT,"| $sendmail -t"))) { &error('エラー'); }

print OUT "X-Mailer: WebFORM v4.0 by ​www.rescue.ne.jp​\n";
print OUT "X-HTTP_REFERER: $ref\n";
print OUT "Errors-To: $mailto\n";
print OUT "To: $mailto\n";
print OUT "From: $email\n";
&jis("Subject: $subject"); print OUT "$msg\n";
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n\n";

&jis("--- ここから ---"); print OUT "$msg\n\n";

$count = @DATA_N;
foreach (0..$count-1) {

if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n\n$DATA_V[$_]\n"); print OUT "$msg\n"; }
else { &jis("$DATA_N[$_] = $DATA_V[$_]"); print OUT "$msg\n"; }
}

&jis("--- ここまで ---"); print OUT "\n$msg\n\n";

$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; }

print OUT "\n";
print OUT "----------------------------------------\n";
print OUT "送信日時   : $date_now\n";
# print OUT "Server-Name : $ENV{'SERVER_NAME'}\n";
# print OUT "Server-Protocol : $ENV{'SERVER_PROTOCOL'}\n";
# print OUT "Server-Port : $ENV{'SERVER_PORT'}\n";
# print OUT "Gateway-Interface : $ENV{'GATEWAY_INTERFACE'}\n";
# print OUT "Request-Method : $ENV{'REQUEST_METHOD'}\n";
# print OUT "Script-Name : $ENV{'SCRIPT_NAME'}\n";
# print OUT "HTTP-Referer : $ref\n";
print OUT "HTTP-User-Agent : $ENV{'HTTP_USER_AGENT'}\n";
print OUT "Remote-host : $host\n";
print OUT "Remote-Addr : $ENV{'REMOTE_ADDR'}\n";
print OUT "----------------------------------------\n";
print OUT "\n";

close(OUT);


# 二通目の送信処理
if (!(open(OUT,"| $sendmail -t"))) { &error('エラー'); }

print OUT "X-Mailer: WebFORM v4.0 by ​www.rescue.ne.jp​\n";
print OUT "X-HTTP_REFERER: $ref\n";
print OUT "Errors-To: $mailto\n";
print OUT "To: $email\n";
print OUT "From: $mailto\n";
&jis("Subject: $subject");
print OUT "$msg\n";
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n\n";

&jis("--- ここから ---");
print OUT "$msg\n\n";

$count = @DATA_N;
foreach (0..$count-1) {

if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n\n$DATA_V[$_]\n"); print OUT "$msg\n"; }
else { &jis("$DATA_N[$_] = $DATA_V[$_]"); print OUT "$msg\n"; }
}

&jis("--- ここまで ---"); print OUT "\n$msg\n\n";

$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; }

print OUT "\n";
print OUT "----------------------------------------\n";
print OUT "送信日時   : $date_now\n";
# print OUT "Server-Name : $ENV{'SERVER_NAME'}\n";
# print OUT "Server-Protocol : $ENV{'SERVER_PROTOCOL'}\n";
# print OUT "Server-Port : $ENV{'SERVER_PORT'}\n";
# print OUT "Gateway-Interface : $ENV{'GATEWAY_INTERFACE'}\n";
# print OUT "Request-Method : $ENV{'REQUEST_METHOD'}\n";
# print OUT "Script-Name : $ENV{'SCRIPT_NAME'}\n";
# print OUT "HTTP-Referer : $ref\n";
print OUT "HTTP-User-Agent : $ENV{'HTTP_USER_AGENT'}\n";
print OUT "Remote-host : $host\n";
print OUT "Remote-Addr : $ENV{'REMOTE_ADDR'}\n";
print OUT "----------------------------------------\n";
print OUT "\n";

close(OUT);


print "Content-type: text/plain\n\n";
print 'Check=ok';

exit;
}
    • good
    • 0
この回答へのお礼

moon_night様

お陰様で、できました!

ご丁寧に説明して頂き有難うございました。

お礼日時:2007/06/05 11:23

sub sendmail {


~~省略~~}
を丸々コピーすると片方のみしか動作しないと思います。
やるのならば
sub sendmail{
~~省略~~}
の中身を二つに増やしてあて先と差出人を逆にするとできると思います。
(sub sendmail{}の中で 「~~省略~~」を二つに増やすと言うことです)

この回答への補足

ご回答有難うございます。

moon_nightのご指摘通り、

if (!(open(OUT,"| $sendmail -t"))) { &error('エラー'); }
       ~~省略~~
print "Content-type: text/plain\n\n";
print 'Check=ok';

exit;

の部分までを中にコピーして、あて先と差出人を逆にしたのですが
できませんでした。

下記にsub sendmailの部分を貼り付けておきますので、ぜひお返事いただけないでしょうか?

よろしくお願いします。



sub sendmail {

if (!(open(OUT,"| $sendmail -t"))) { &error('エラー'); }

print OUT "X-Mailer: WebFORM v4.0 by www.rescue.ne.jp\n";
print OUT "X-HTTP_REFERER: $ref\n";
print OUT "Errors-To: $mailto\n";
print OUT "To: $mailto\n";
print OUT "From: $email\n";
&jis("Subject: $subject"); print OUT "$msg\n";
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n\n";

&jis("--- ここから ---"); print OUT "$msg\n\n";

$count = @DATA_N;
foreach (0..$count-1) {

if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n\n$DATA_V[$_]\n"); print OUT "$msg\n"; }
else { &jis("$DATA_N[$_] = $DATA_V[$_]"); print OUT "$msg\n"; }
}

&jis("--- ここまで ---"); print OUT "\n$msg\n\n";

$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; }

print OUT "\n";
print OUT "----------------------------------------\n";
print OUT "送信日時   : $date_now\n";
#print OUT "Server-Name : $ENV{'SERVER_NAME'}\n";
#print OUT "Server-Protocol : $ENV{'SERVER_PROTOCOL'}\n";
#print OUT "Server-Port : $ENV{'SERVER_PORT'}\n";
#print OUT "Gateway-Interface : $ENV{'GATEWAY_INTERFACE'}\n";
#print OUT "Request-Method : $ENV{'REQUEST_METHOD'}\n";
#print OUT "Script-Name : $ENV{'SCRIPT_NAME'}\n";
#print OUT "HTTP-Referer : $ref\n";
print OUT "HTTP-User-Agent : $ENV{'HTTP_USER_AGENT'}\n";
print OUT "Remote-host : $host\n";
print OUT "Remote-Addr : $ENV{'REMOTE_ADDR'}\n";
print OUT "----------------------------------------\n";
print OUT "\n";

close(OUT);

print "Content-type: text/plain\n\n";
print 'Check=ok';

exit;
}

補足日時:2007/06/04 11:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!