フォームメールで送信元に控えを送る場合のあいさつ文を変えるには?

[上に] [前に] [次に]
にわ 2000/04/04(火) 05:11:59
「とほほのwww入門」のCGIのコーナーからフォームメールのプログラムを
ダウンロードさせていただきました。
送信元に送った内容と全く同じ内容のメールが届くのですが、本来送信先に届く
ものと同じ状態で自分に届くので、きちんと送信できずに返ってきたのかと思って
しまいます。「以下の内容のメールを送りました」みたいな文章を最初に入れたい
のですが、どのようにすればよいのでしょうか。

> とほほ 2000/04/04(火) 05:37:07
どのようにすればよいのでしょうか。

H&A 2000/04/04(火) 11:06:21
wwwmail.cgi の 160 行目 (「メールボディを作成する」) あたりに

$mailbody = <<END_OF_DATA;
------------------------------------
こちらは、メール送信フォームです。
$mailto に以下のメールを送信しました。
------------------------------------
END_OF_DATA
&jcode'convert(*mailbody, "jis");

などと追加すれば、送信するメールの本文先頭に上記メッセージが挿入されます。
…が、もちろん送信先に届くのも同じ内容になりますし、「メール送信結果」画面にも表示されます。

フォームに入力した人の控えのみメッセージを挿入するようにするには、メール送信処理にも改造をほどこす必要がありますね。

H&A 2000/04/04(火) 14:36:01
「フォームに入力した人の控えのみメッセージを挿入」というのを試してみました。
とても汚い改造ですが…

1) 72 行目付近に挿入
控えのメールに挿入する文字列を定義します。

# ★ メール本文(控え用ヘッダ)
#    <<END_OF_DATA 〜 END_OF_DATA の間を好みにあわせて変更してください。
$mailnotation = <<END_OF_DATA;
------------------------------------
こちらは、メール送信フォームです。
$mailto に以下のメールを送信しました。
------------------------------------
END_OF_DATA

2) 147〜151 行目を変更
"To:" や "Cc:" などのヘッダをつけないよう、コメントアウトします。

# $mailhead  = "To: $mailto\n";
# if ($FORM{'EMAIL'} ne "(unknown)") {
# $mailhead .= "Cc: $FORM{'EMAIL'}\n";
# }
$mailhead  = "From: $FORM{'EMAIL'}\n";

3) 172〜186 行目を変更
送信先(自分)と控え(フォームに入力した人)それぞれに対して個別にメール送信させます。

# メール送信サブルーチン
sub mailsend {
local($to, $badd) = @_;
if (-x $sendmail) {
unless (open(OUT, "| $sendmail -t")) {
    &errexit("メールの送信に失敗しました。");
}
unless (print OUT &mimeencode("To: $to\n" . $mailhead)) {
    &errexit("メールの送信に失敗しました。");
}
unless (print OUT $badd . $mailbody) {
    &errexit("メールの送信に失敗しました。");
}
close(OUT);
}
}
#
# メールを送信する
#
{
&mailsend($mailto, "");
if ($FORM{'EMAIL'} ne "(unknown)") {
&jcode'convert(*mailnotation, "jis");
&mailsend($FORM{'EMAIL'}, $mailnotation);
}
}

このような感じでいかがしょうか?

H&A 2000/04/04(火) 14:37:46
補足です。
"H&A 2000/04/04(火) 14:36:01" の改造を行う際には、"H&A 2000/04/04(火) 11:06:21" の追加は行わないようにお願いします。
両方適用してしまうと、メッセージがダブってしまいます。

にわ 2000/04/05(水) 01:56:03
[[解決]]
早速のレスありがとうございます。
貴重な時間を割いてご丁寧な回答感謝いたします。
H&Aさんの回答をもとに変更していきましたら、あっという間に
希望通りに控えのデータの頭にコメントをつけることが出来ました。
プログラムとにらめっこしているうちに、少しづつですが書いている
内容の意味がわかるようになってきました。
CGIの入門書片手に格闘中ですが、本だけでは分からないことも多く、
周りにCGIに詳しい人がいないのでここで教えていただいたことは
本当にありがたく思います。
どうもありがとうございました。

[上に] [前に] [次に]