メール送信フォームの送信先を複数にできますか?

[上に] [前に] [次に]
hiro [E-Mail] 1999/05/14(金) 00:10:44
皆さん、はじめまして。

CGIを自分で書くことができないので、無料のメール送信ファームを
利用しています。今度、その送信先を2箇所にしたいと考えていますが、
可能でしょうか?

もし可能でしたら、「wwwmail.txt」の下記の箇所に、どのように
2つのメールアドレスを書けば良いのでしょうか?

アドバイスよろしくお願いいたします。

# ★ 送信先メールアドレス
#    $mailto = 'abc@xxx.yyy.zzz'; のようにあなたのメールアドレスに
#    書き換えてください。
$mailto = '';

ふじ 1999/05/14(金) 01:21:38
$mailtpo = 'abc@xxx.yyy.zzz,efg@aaa.bbb.ccc';

ふじ 1999/05/14(金) 01:22:27
あ、間違えた。
$mailtpo -> $mailto
です。

hiro 1999/05/14(金) 12:28:12
ふじさん、アドバイスありがとうございます。

このようにやってみたのですが、一つのメールアドレスにしか
送信されません。なぜなのでしょう?

一つには届くのでCGIはきちんと動いていると思いますが、
二つ目に届かない場合には、どのような箇所を確認すれば
良いのでしょうか?

アドバイスお願いいたします。

なえ 1999/05/14(金) 13:15:00
ふじさんのやり方でだめなら、おそらくその無料のメール送信CGIが
一件しか送れないような仕様になってるんじゃないでしょうか?

hiro 1999/05/14(金) 16:05:52
なえさん、ありがとうございます。
そういうこともあるのですね。

試したのはこちらの「とほほさんのメール送信フォーム
(wwwmail.cgi)」と「ネットサーフレスキュー
[裏技]さんのwebform.cgi」です。

これらのCGIで複数のメールに送信できないとすると、
他の可能な無料CGIを、どなたかご存じではないでしょうか?

ふじ 1999/05/14(金) 16:33:12
もしかして、sendmailの方に制限を掛けているかもしれません。
だとすると、CGIの方で

foreach $mailto('aaa@bbb.ccc' , 'xxx@yyy.zzz'){
...
メイルを送信する部分
...
}
などとして、2回送信するようにしないといけないかもしれませんね。

hiro 1999/05/14(金) 19:46:38
ふじさん、ありがとうございます。

教えていただいたことを試してみたいのですが、CGIが
詳しくありません。少しお教えいただけますか。

これはCGI本体の中にあるメール送信部分を上記のように囲み、
メールの送信先を2箇所、先に書き込んでしまうということ
ですね。ただCGIの中で、どこが「メイルを送信する部分」
なのかがはっきりしません。

「メイルを送信する部分」は、通常どのように書きはじめて
いるのでしょうか?

「wwwmail.cgi」もしくは「webform.cgi」を例に
教えていただくことはできますでしょうか?

また、上記のような追加書き込みをすると、以下のように
なっている箇所は、空欄にしておけばよいのでしょうか?

# ★ 送信先メールアドレス
#    $mailto = 'abc@xxx.yyy.zzz'; のようにあなたのメールアドレスに
#    書き換えてください。
$mailto = '';

ふじ 1999/05/15(土) 01:57:45
wwwmail.cgiを例に取りますと、

foreach $mailto ('aaa@bbb.ccc' , 'xxx@yyy.zzz'){
#-----ここから
#
# メールヘッダを作成する
#
{
&jcode'convert(*subject, "jis");
$mailhead  = "To: $mailto\n";
if ($FORM{'EMAIL'} ne "(unknown)") {
.........
中略
.........
unless (print OUT $mailbody) {
    &errexit("メールの送信に失敗しました。");
}
close(OUT);
}
#-----ここまで
}

と、上記のように括ればよろしいかと。
この場合、最初の $mailto の設定は空のままでよいです。

hiro 1999/05/15(土) 08:18:58
ふじさん、本当にありがとうございます。
2カ所のメールアドレスへの送信はうまくいきました。

ただ「wwwmail.cgi」の場合、「ブラウザ画面に送信結果を書き出す」
ようになっていますが、ユーザーに書いていただいたメッセージ内容が
重複して表示されてしまいます。これを防ぐことはできないでしょうか?

細かくお聞きしてばかりで申し訳ありません。

例)
name=太郎
email=aaa@bbb.com
comments=こんにちは
name=太郎
email=aaa@bbb.com
comments=こんにちは

ふじ 1999/05/15(土) 15:06:12
#
# メールボディを作成する
#
{
$mailbody = '';
for ($i = 0; $i < $cnt; $i++) {
    $mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n";
}

上記のように、
$mailbody = '';
を追加すればいいでしょう。
(繰り返しているから、$mailbody を一回毎にクリアしないと)

hiro 1999/05/15(土) 17:26:23
ふじさん、うまく解決できました。
本当にありがとうございました。

最後に大したことではないのですが、ブラウザ画面に
送信結果が表示された時、一点疑問が出てきました。

「Cc:」として、記入された方のメールアドレスが表示
されていますが、私がテストをしたアドレスに、メールが
送られることはありませんでした。「Cc:」に関しては
以下の部分が関係ありそうですが、これは何のために
書かれているのでしょうか?

# メールヘッダを作成する
(中略)
if ($FORM{'EMAIL'} ne "(unknown)") {
$mailhead .= "Cc: $FORM{'EMAIL'}\n";
}

ふじ 1999/05/15(土) 21:59:13
sendmailは、To:とCc:に同じアドレスがあると、
まとめて1通しか送らないようです。

普通、Cc:で指定したアドレスにもメイルが送られますが、
hiroさんの環境ではsendmailで1つの宛先にしか送信できない
制限を掛けている可能性があるので、Cc:を無視しているのかも知れません。

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