sendmailで、複数のメールアドレスに送信したいのですが、
Perlのスクリプトで、メールヘッダを出力するとき、
open(TMP,"| /usr/sbin/sendmail -t");
print TMP "To:***@**co.jp,***@**co.jp\n";
などのようにカンマをはさんで複数のアドレスをそのまま記述すれば
送信できるのでしょうか?
なぜこう思ったかと言うと、
サイトサーブでのCGIの設置で、フォーム側に送信先アドレスを設定して渡すのですが、
そのとき複数アドレスの指定の仕方がカンマをはさんで記述するようになっていたからです。
また、他の方法があれば教えてください。
お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

送れますが、それでは相手方に全てのメールアドレスを見せてしまいますが、問題ありませんか?



他の方法としては、
@aryEMail = split(/,/, $strEMail);
等として配列に分け、ループで1通ずつ送ると言う方法もありますがいかがでしょう?

この回答への補足

さっそくのご回答ありがとうございます。
送れるのですね。
相手にアドレスが見えるのはとりあえずいいです。
ループにして送る場合、なんと言うか、
間をもたしたほうが(時間稼ぎ)したほうがいいのでしょうか?
sleep(?)とかあったような・・・。
2,3回のループであれば問題ないでしょうか?
またご回答いただければ幸いです。

補足日時:2002/02/17 01:09
    • good
    • 0

そのままループで大丈夫だと思います。


私はそうしていますが、今まで特に問題ありませんでした。
ただ、1000とか10000とか送ろうと思ったら、サーバが落ちてしまうので方法を変えないといけなくなりますが…(^^;
    • good
    • 0
この回答へのお礼

納得しました。
どうも有り難うございました。

お礼日時:2002/02/17 10:29

このQ&Aに関連する人気のQ&A

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

このQ&Aと関連する良く見られている質問

Qsendmailの-fオプション記述

sendmailコマンドでは、-f オプションでfromアドレスを指定しない場合、お客様のBIGLOBEメールアドレスがfromアドレスに設定されてメール送信がされます。

↑と記載されているので-fオプションを設定したいのですが、↓に書き足すにはどの様に記載したら良いでしょうか?

if ($sendmail) {send_mail($sendmail,'',$subject,$masteremail,'','','',$msg)}

if ($sendmail) {send_mail($sendmail -f ***@***.ne.jp,'',$subject,$masteremail,'','','',$msg)}

↑だとBIGLOBEメールアドレスのまま届いてしまいます。

Aベストアンサー

perl-lib.pl をよくよくのぞいてみましたところ、
sendmailコマンドで-fオプションを指定できるように書き換える必要があります。

perl-lib.pl 212行目付近の send_email 関数は、
以下のような構造となっています。
(かなり省略しました)

------------------------------------------------------------------------------
sub send_email {
my($sendmailpath, $uuencodepath, $subject, $from, $to, $cc, $bcc, $body, $files, $encoding, $separator) = @_;
... 略
if ( $sendmailpath =~ /blatj/i ) {
... 略
} elsif ( -e $sendmailpath ) {
... 略
if (open(MAIL,"| $sendmailpath -t")) {
... 略
} else { $err = 'Error Open sendmail Failure'; }
} else { $err = 'Error Not sendmail Utility'; }
$err;
}
------------------------------------------------------------------------------


この

if (open(MAIL,"| $sendmailpath -t")) {

という行を、

if (open(MAIL,"| $sendmailpath -f $from -t")) {

と書き換えればよい。


ところで、回答ANo.1 の補足に貼り付けられたコードで、
CGIプログラム中での send_email 関数の呼び出し箇所

if ($sendmail) {send_email($sendmail,'',$subject,$masteremail,$masteremail,'','',$msg)

if ($sendmail) {send_email($sendmail,'',$subject,$masteremail,$masteremail,'',$bcc,$news)

のように、from と to の両方に同じ変数 $masteremail を渡しているのですが、これは問題ないのでしょうか??

perl-lib.pl をよくよくのぞいてみましたところ、
sendmailコマンドで-fオプションを指定できるように書き換える必要があります。

perl-lib.pl 212行目付近の send_email 関数は、
以下のような構造となっています。
(かなり省略しました)

------------------------------------------------------------------------------
sub send_email {
my($sendmailpath, $uuencodepath, $subject, $from, $to, $cc, $bcc, $body, $files, $encoding, $separator) = @_;
... 略
if ( $sendmailp...続きを読む

Q「***.txt」 から 「***.pl」 への変更は?

こんにちは。
アクセス解析CGIの導入に挑戦しようと思ってます。

マニュアルに
「***_pl.txt をダウンロードしてファイル名を ***.pl に変更する」
とあるのですが、txtファイルからplファイルへ変更するのは
どのようにしたらいいのでしょうか。
ファイル名を変更するだけじゃないですよね・・・?

あと、必要ファイルとして

 ***.pl … アクセスログ取得スクリプト
 ***.txt … アクセスログ

と書いてあります。
配布されているのは「***_pl.txt」というファイルだけで、
「***.txt」というファイルは無いようなんですが、
自分で「***.txt」というファイルを作ればいいのでしょうか・・・?

”***”には全て同じ名前が入ってます。

入手先にサポートBBSなどがないので、こちらで教えていただけると助かります。
よろしくお願いします。

Aベストアンサー

>採取したログはaxslog.txtに溜まっていくという解釈で
>間違ってないでしょうか?
>また、ログの確認(閲覧)方法はいったんローカルに落と>してそのファイルを見るという事でしょうか・・?

う~ん、そこまでくるとダウンロード元の製作者に聞くのが一番手っ取り早いと思うんですが(^^;
ログはたしかにaxslog.txtというファイルに書きこまれて
いるようですね。これはアクセス解析か何かをHP上でやって
みたいという事ですよね?(^^)
ローカルに落とした物の中を覗くと判ると思いますが
通常はタブで区切られていたりカンマで区切られていたり
独自の色々な表現で書かれているかと思います。
web上で確認できるシステムを利用していると思うのですが
ログファイルを覗いてどんな風に書かれているのかを見る
というのも、勉強になると思いますよ。
cgi部分でどのようにアクセスし、どこで書き込み作業があって
という大まかな作業の流れを把握してみてください。

Qcgi perl 同じ変数で一つはカンマ削除、ひとつはカンマ有りにしたい

みなさまお世話になります。質問させていただきます。

cgi (perl)で 同じ変数で一つはカンマ削除、ひとつはカンマ有りにしたいのですが、
すぐ手直しできる方法など有りますでしょうか?
教えていただきたく宜しくお願いします。

$yoto =~s/\s/,/g; <!--こちらはカンマ有り

---省略-

print <<"EOF1";
---省略-
$yoto    <!--こちらはカンマなしにしたい(先頭にカンマがついてしまいます)



何卒よろしくお願いいたします。

Aベストアンサー

えぇと, つまり
・$yoto1 が「ある」ときには $yoto1 と $yoto をカンマ (なりなんなり) で区切る
・$yoto1 が「ない」ときには $yoto だけにする
ってこと?

もしそうなら, 何も考えず「そのような文字列」を作って変数に入れてしまえばいい.

Qsendmailの送信先アドレスを2つに増やす方法

# 送信先メールアドレス
$mailto = 'aaa@bbb.co.jp';

フォームからのメール送信を同時に二つのアドレスにしたいのですが
上記のような設定項目にメールアドレスを羅列することが可能であれば
どのように記述すればよろしいか教えて下さい。

情報が少ない質問ですみません、一般的なフォーム送信用のcgiだと思います。

Aベストアンサー

RFC2822 に 「メールヘッダの宛先フィールド(To、Cc、Bcc)は、コンマで区切られた1つないし複数のアドレスのリストである」 と規定されています。

Qhttp://***.cgi?key=$keyの部分について

<a href='***.cgi?key=$key'>リンク</A>

とすると、

http://**.cgi?key=*****
というリンクがアドレスバーに表示されて、次のページへ進みますよね。

この、cgiの後の部分(?key=****)を表示しない方法というのはありますか?
POSTでやれば表示されませんが、ボタンばっかりだとすっきりしないので…。

Perlでかいています。

Aベストアンサー

ボタンだとすっきりしないというのが見た目の問題ならば、スタイルシートでボタンをテキストリンク風な表示にすることもできますが、それでは不都合があるでしょうか?
なお、どのようなCGIかはわかりませんが、getで問題ない部分はgetにしておいた方が直接urlを表記したい場合に使い勝手がいい場合もあります。
(例えばgoogleの検索がpostだったら、かなり使い勝手が悪くなりますね。)


このカテゴリの人気Q&Aランキング

おすすめ情報