プロが教える店舗&オフィスのセキュリティ対策術

sendmailが使えるCGIを設置して分からないことが出てきました
自分は設置程度は出来ますが、書き換え等は初心者ですm(_ _)m

http://www.supra.cx/joyful2chMe/index.html
こちらを設置したのですが、新着投稿を複数のアドレスに送るにはどうしたらよいでしょうか
PCアドレスと携帯に転送したいと思います。$mailto = '×××@yahoo.co.jp';の先に
アドレス追加してみたのですが最初のアドレスにしか届きませんでした

# 投稿があるとメール通知する (sendmail必須)
# 0 : 通知しない
# 1 : 通知するが、自分の投稿記事はメールしない。
# 2 : 通知する。自分の投稿記事も通知する。
$mailing = 2;
$mailto = '×××@yahoo.co.jp';
# メールアドレス(メール通知する時)
$mail_title = '新規投稿';# 通知メールのタイトル
$mail_form = 'master <×××@yahoo.co.jp>';# 通知メールの差出人
$sendmail = '/usr/lib/sendmail';# sendmailパス(メール通知する時)

windows2000
ロリポップサーバーを使ってます。

宜しくお願いします

A 回答 (4件)

#あくまでも参考までに。


sendmailの仕様にも寄りますが、こんなのもありだと思います

open(MAIL,"| $sendmail -t");
print MAIL "Bcc: $_\n" foreach (split(/,/, $mailto));
print MAIL "From: $mail_form\n";
#print MAIL "Errors-To: $mail_error_to"; #エラーメールの送り先
print MAIL "Subject: $mail_sub\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $ver\n\n";
print MAIL "$mail_body\n";
close(MAIL);

#これだと、メーラー(?:デーモンとでも呼ぶべきか?)の負荷も、スクリプト自体の負荷も減ると思います。(時々、toを設定しないとメールを送信してくれない設定をしているサーバーもあるので要注意。)
#詳しい制約などはsendmailのマニュアルを読んでみると新しい発見があるかもしれません。
#メールアドレスの表記方法は "abc@abc.abc"だけではなく、"abcさん <abc@abc.abc>"と言う表記もあるって事も言いたいけど、今回は割愛させていただきます^^;
    • good
    • 0
この回答へのお礼

おお、またまた詳しく教えて頂きありがとうございました
勉強不足な所たくさんあるので
いろいろ試してみたいと思いますm(_ _)m 感謝!

お礼日時:2005/06/03 11:07

#1 です。



ちょっと修正です。foreach の () が抜けていました。

foreach my $wmailto split(m/,/, $mailto) {



foreach my $wmailto (split(m/,/, $mailto)) {

として下さい。


foreach my $wmailto (split(m/,/, $mailto)) {
open(MAIL,"| $sendmail -t");
print MAIL "To: $wmailto\n";
print MAIL "From: $email\n";
print MAIL "Subject: $mail_sub\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $ver\n\n";
print MAIL "--------------------------------------------------------\n";
print MAIL "$mail_body\n";
print MAIL "--------------------------------------------------------\n";
close(MAIL);
}



foreach my $wmailto (split(m/,/, $mailto)) {
open(MAIL,"| $sendmail -t");
print MAIL "To: $wmailto\n";
print MAIL "From: $mail_form\n";
print MAIL "Subject: $mail_sub\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $ver\n\n";
print MAIL "$mail_body\n";
close(MAIL);
}

です。
    • good
    • 0
この回答へのお礼

重ね重ねありがとうございます、上手くできたら報告したいと思いますm(_ _)m

お礼日時:2005/05/31 16:26

#1 です。



途中で切れてしまったみたいですね。

の様に半角カンマ(半角カンマが都合が割るけれど、foreach の行にある m/,/ のカンマを別の文字に変更。)していただければ、同じ内容のメールが複数のアドレスへ送信させる様になると思いますよ。

始めにも書きましたが、このスクリプトを改造して利用して良いか確認していませんので、良く確認してから使ってくださいね。

指定できるメールアドレスの数には制限はありませんが、あまり多いとサーバーから警告を受けるかも知れません(Sendmailは重い部類に入ります。)。あまりメールアドレスを追加しない方が良いと思います。

また、僕はスクリプトをダウンロードして、ソースを数カ所読んだだけでスクリプトの修正案を作りました。
多分、これで問題は無いと思いますが、動作を確認するまでは、ご自分のメールアドレス以外のメールアドレスを指定しない様にしてくださいね。
    • good
    • 0
この回答へのお礼

大変詳しく教えて頂きありがとうございました
作者さんのHPみたら質問には答えないと書いてあり改造は自由にということ
なのでやってみます。まずは自分の携帯への転送が出来るかどうかやってみます

お礼日時:2005/05/31 16:25

このスクリプトは改造して使って良いのかな?確認してから使ってくださいね。



全く試していませんが。

joyful2ch.cgi の 1832行目~

open(MAIL,"| $sendmail -t");
print MAIL "To: $mailto\n";
print MAIL "From: $email\n";
print MAIL "Subject: $mail_sub\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $ver\n\n";
print MAIL "--------------------------------------------------------\n";
print MAIL "$mail_body\n";
print MAIL "--------------------------------------------------------\n";
close(MAIL);



foreach my $wmailto split(m/,/, $mailto) {
open(MAIL,"| $sendmail -t");
print MAIL "To: $wmailto\n";
print MAIL "From: $email\n";
print MAIL "Subject: $mail_sub\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $ver\n\n";
print MAIL "--------------------------------------------------------\n";
print MAIL "$mail_body\n";
print MAIL "--------------------------------------------------------\n";
close(MAIL);
}


joyful2ch-hi.cgi の 1722行目~

open(MAIL,"| $sendmail -t");
print MAIL "To: $mailto\n";
print MAIL "From: $mail_form\n";
print MAIL "Subject: $mail_sub\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $ver\n\n";
print MAIL "$mail_body\n";
close(MAIL);



foreach my $wmailto split(m/,/, $mailto) {
open(MAIL,"| $sendmail -t");
print MAIL "To: $wmailto\n";
print MAIL "From: $mail_form\n";
print MAIL "Subject: $mail_sub\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "X-Mailer: $ver\n\n";
print MAIL "$mail_body\n";
close(MAIL);
}

として、

$mailto = '×××@yahoo.co.jp';



$mailto = 'foo@domain.com,bar@domain.com';

の様に半角カンマ(半角カンマが都合が割るけれど、foreach の行にある m/,/ のかん
    • good
    • 0
この回答へのお礼

早速ありがとうございます!作者の方にも問い合わせ中なのですが
お返事頂けないのでこちらで質問させて頂きました

単純にアドレスを追加するだけじゃダメだったんですね

書き換えしてみたいと思いますm(_ _)m

お礼日時:2005/05/31 14:04

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