• 締切済み

CGI掲示板のSendmail送信について

CGI掲示板を自作していますが、書き込み送信メールのSendmailによる送信処理でつまづきました。 以下のように記述すると、管理人である自分には登録メールが送られますが、 管理人以外に、書き込みした人にも登録確認メールが送られるようにしたいんです。 #Sendmailによる送信処理 if (open(MAIL,"| $sendmail -t")){ print MAIL "X-Mailer:legend2\n"; print MAIL "To: $administrator\n"; print MAIL "Errors-To: $administrator\n"; print MAIL "From: $administrator\n"; print MAIL "Subject: $subject\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 "$mail_comment\n"; print MAIL "\n"; close(MAIL); } } 以下のどれかを使うのでしょうか? print SENDMAIL "From: $sender <$from>\n"; print SENDMAIL "To: $to\n"; print SENDMAIL "Cc: $cc\n"; print SENDMAIL "Bcc: $bcc\n"; どうすれば良いか御教授下さい。宜しくお願いします。

  • CGI
  • 回答数3
  • ありがとう数3

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

Bcc: $administrator ――の方が良いのでは。 掲示板投稿者に知られても構わないのであれば、Toでも良いですが。

legend99
質問者

お礼

レス、有難うございました。 無事に以下で成功致しました。 print MAIL "To: $administrator, $in{'email'}\n";

  • _himajin_
  • ベストアンサー率65% (128/195)
回答No.2

単純に print MAIL "To: $administrator, $in{'email'}\n"; でいいと思います。

legend99
質問者

お礼

レス、有難うございました。 無事に以下で成功致しました。 print MAIL "To: $administrator, $in{'email'}\n";

  • _himajin_
  • ベストアンサー率65% (128/195)
回答No.1

print MAIL "To: $administrator\n"; しかないからです。 print MAIL "To: $administrator, $atesaki\n"; みたいにして $atesaki に書き込んだ人のメールアドレスを取り込むようにする必要があります。 ($to に 管理人と書き込んだ人のメールアドレスを入れて To: $to でもいいですが)

legend99
質問者

お礼

レス、有難うございました。 無事に以下で成功致しました。 print MAIL "To: $administrator, $in{'email'}\n";

legend99
質問者

補足

_himajin_様、さっそくアドバイス有難うございます。 >print MAIL "To: $administrator, $atesaki\n"; >みたいにして $atesaki に書き込んだ人の >メールアドレスを取り込むようにする必要があります。 こちらがやりやすそうですね。 メールアトメレスの変数は以下のようになっていますが、 $mail = "$in{'email'}"; #メールアドレス 下記のようにして送信設定に組み込めば、 $atesaki= "$in{'email'}"; print MAIL "To: $administrator, $atesaki\n"; で作動しますでしょうか? また宜しくお願いします。

関連するQ&A

  • sendmailで送信すると、迷惑メールになります

    フォームに入力された内容をperlでsendmailを使って送信すると、ウイルス対策ソフトの判定で、迷惑メールに入ってしまいます。 ▼プログラム $subject = 'テストメール'; $msg = "------------------------------------------------------------------ [名前] $name [住所] $address ------------------------------------------------------------------"; # subjectをBase64エンコード jcode::convert(\$subject, 'euc'); jcode::convert(\$subject, 'jis', 'euc', 'z'); $subject = '=?ISO-2022-JP?B?' . encode_base64($subject, '') . '?='; # 本文をJISに変換 jcode::convert(\$msg, 'jis'); &mail($to_mail, $from_mail, $subject, $msg); ▼サブルーチン sub mail{ my($to_mail, $from_mail, $subject, $msg) = @_; # sendmailによるメール発信 my $sendmail = '/usr/lib/sendmail'; # sendmailパス open(MAIL,"| $sendmail -t") || &error("メール送信に失敗しました"); print MAIL "To: $to_mail\n"; print MAIL "From: $from_mail\n"; print MAIL "Subject: $subject\n"; print MAIL "X-Mailer: Mail Form Sendmail\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Content-type: text/plain; charset=\"iso-2022-jp\"\n"; print MAIL "MIME-Version: 1.0\n\n"; print MAIL "$msg"; close(MAIL); } print MAIL "Content-type: text/plain; charset=\"iso-2022-jp\"\n"; を print MAIL "Content-type: text/plain;\n"; にすれば迷惑メールにならずに済むのですが、一部の利用者(特にMacユーザー)で、送信されたメールが文字化けしているようですので、何とかcharsetの指定も入れたいと思っています。 上記のプログラムで、おかしいところがあるでしょうか? どうか、ご教示いただけますよう、よろしくお願いします。

    • ベストアンサー
    • CGI
  • cgi(perl) sendmailの使い方

    お手数ですがよろしくお願い致します。 レンタルサーバー(ロリポップ)にCGIを設置してサイトを作成しています。 メールフォームを作ってフォームから指定されたメールアドレスに自動返信するようにしたいのですが、うまく動作しなくて困っています。 利用環境は Perl(ver.5.8.8)でsendmailについては以下のようになっています。 ・SENDMAIL の利用は可能です。 postfixによるラッパーとなります。 ・sendmailのパスは/usr/lib/sendmail もしくは/usr/sbin/sendmail どちらでも利用可。 現在メールを送るところまでは出来るようになったのですが、届くメールを見ると宛先などのアドレスに余計なドメインが付加されているのです。 テスト中のcgiは大体以下のような感じです。 my $from = 'foo01\@bar.jp'; my $to = 'foo02\@bar.jp'; my $subject = 'test'; my $msg = 'test'; open(SDML,"| $sendmail -t -i") || die; print SDML "From: $from\n"; print SDML "To: $to\n"; print SDML "Cc: $cc\n"; print SDML "Subject: $subject\n"; print SDML "Content-Transfer-Encoding: 7bit\n"; print SDML "Content-Type: text/plain;\n\n"; print SDML "$msg"; close(SDML); これで送られてくるメールを見ると 宛先: "foo02@bar.jp"@usersXXX.phy.lolipop.jp (XXXは本当は数字。usersXXXはロリポップのサーバー番号というものらしいです。) こんな風に余計なドメインがくっついて送られてきます。 print SDML "To: $to\n"; → print SDML "To: foo02\@bar.jp\n"; という感じで直書きに直すとこの症状は起こらないのですが、変数で指定するとどうしても起こります。 自動返信するため宛先に変数を使いたいのですがどうしたらこの症状が出ないように出来るのでしょうか?

    • ベストアンサー
    • CGI
  • sendmailについて

    CGIからサーバにあるsendmailを使おうとしているのですが、分からない点があります。 メール自体は、きちんと送信されるのですが、To以外のヘッダーが本文と一緒に送信されてしまいます。 メールの送信者欄と件名欄が空白になってしまい困ってます。分かる人がいましたら教えてください。 下記がソースです。 &jcode'convert(*subject,'jis'); &jcode'convert(*message,'jis'); open(MAIL,"|$sendmail -t -f $master_mail"); print MAIL "To: $mail\n"; print MAIL "From: $master_mail\n"; print MAIL "Subject: $subject\n"; print MAIL "Contnt-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n\n"; print MAIL "$message\n"; close(MAIL);

    • ベストアンサー
    • Perl
  • Perl/CGIについて

    #!/usr/bin/perl use CGI; $cgi = new CGI(); $from = $cgi->param('from'); $namae = $cgi->param('namae'); $naiyou = $cgi->param('naiyou'); print "Content-type: text/html\n\n"; # 設定 $sendmail = '/usr/lib/sendmail'; $jcode = './jcode.pl'; $to = 'ha***@***.ne.jp'; #$from = ''; $subject ='名鉄と地下鉄の直通運転'; # 文字コードライブラリの読み込み require $jcode; # メール送信 &jcode'convert(*subject,'jis'); open(MAIL,"| $sendmail -t"); # ヘッダ情報出力 print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n\n"; # 本文出力 print MAIL " $namae\n\n"; print MAIL " $naiyou\n"; close(MAIL); #確認表示 print " $namae\n"; print " $naiyou\n"; print "メールを送信しました\n"; end #確認表示の所で表示が改行されない。

    • ベストアンサー
    • Perl
  • CGI(Perl)からメールを送信するには

    ゲストブックに投稿があった際、メール(sendmail)で通知するように改造中です。 メールを送信するには、件名をMIMEエンコードするのが決まりだと知りましたが、下記の送信処理には含まれていないのでしょうか? また、送信処理に不備があるようでしたら、アドバイスを頂ければありがたいです。 送信処理は以下の通りで、書き込み処理(ログファイルに書き込む処理)の直後に加えています。 投稿者は「$in{'name'}」で、投稿内容(本文)は「$in{'body'}」です。 CGIの漢字コードはシフトJISで、改行コードはCR+LFです。 # sendmailのパス $sendmail = '/usr/sbin/sendmail'; # 送信先 $tomail = 'ooooo@ooooo.ne.jp'; # 送信者 $frommail = 'xxxxx@xxxxx.ne.jp'; # 件名 $subject = "ゲストブックに投稿がありました"; # 送信 open (OUT,"|$sendmail -t"); $send = ""; $send .= "To: $tomail\n"; $send .= "From: $frommail\n"; $send .= "Subject: $subject\n"; $send .= "\n"; $send .= "【 名 前 】 $in{'name'}\n\n"; $send .= "【 内 容 】 $in{'body'}\n\n"; &jcode'convert(*send,'jis'); print OUT $send; close (OUT); それから、もうひとつ気になることがあります。 投稿された際に送信される時とされない時があり、4~5時間後にまとめて届くこともありますが、届かないままのものもあります。 届かなかったメールはどこに行ってしまったのでしょうか? サーバの管理者へ届く・消えてしまう場合、私宛にエラーメール(?)を返すことはできないでしょうか? 差し支えなければ、こちらについてもアドバイス頂けると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • sendmailで複数アドレスに送信するも2件までしか送信出来ない

    会員向けメール通信システムを作成しています。(けしてSPAMではありません。) PerlCGIによりSendMail送信させますが、次のようなコードで(一部省略しています。) # =================================================== $MAILTO="xxx\@xxxx.com;ooo\@oooo.com"; $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($from); $mail_subject = mimeencode($subject); $m_header = <<END; Bcc: $mail_to From: $mail_from<$mail> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP END # sendmailで送信 open(MAIL, "| $SENDMAIL -t -f $mail"); print MAIL $m_header, $m_body; close MAIL; # =================================================== で表記のように $MAILTOが2件までなら送信が出来ますが "xxx\@xxxx.com;ooo\@oooo.com"; ではなく "xxx\@xxxx.com;ooo\@oooo.com;aaa@aaa.jp"; の様に3件以上になると送信されません。 なにが原因であるかと、対応策を教えて下さい。

    • ベストアンサー
    • Perl
  • sendmailについて

    以前ここで同様の質問を見たような気がするのですが、時間がないので、また質問させてください。 プロバイダーのsendmailを使ってメールマガジン送信フォームを作成したのですが、2600件メール送信実験中960件辺りで止まってしまいます。 スクリプトは以下の通りです。 foreach (@mailto) { $ok_cnt ++; if (open(MAIL,"| $sendmail -t")) { print MAIL "FormMailer: HOT-NET BINGO Original Mailer Vs2.00\n"; print MAIL "Reply-to: $master\n"; print MAIL "From: $master\n"; print MAIL "To: $_\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Content-Type: text/plain; charset=iso-2022-jp\n"; print MAIL "\n\n"; print MAIL "$message\n"; print MAIL "\n"; close(MAIL); open(TMP,">>$tmpfile"); print TMP "$ok_cnt\t$_\n"; close(TMP);           if (($ok_cnt % 100) == 0) {sleep 5;} } 当初4~500件位で止まってしまっていたので、 100件送信ごとに5秒のインターバルをおいてみました。 何がダメで止まってしまうのでしょうか? また、何か良い方法があれば教えていただけませんか?

    • 締切済み
    • CGI
  • Sendmailで送信すると本文にメールヘッダーが出る

    いつもお世話になります。 PerlでSendmail送信プログラムは何回か作ったことが有るのですが、いつもと同じように作っているつもりにも関わらず、送信されたメール本文の1~2行目に Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP が表示されます。 コードは$mailtoや$mail_from、$mail_subjectなどをMIMEエンコードしてから下記の様なコードでメールヘッダーを作成し $header = <<END; To: $mailto Bcc:$mail From: $mail_from<$mail> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP END #メールの本文を下記のように作成 $body = <<END; メール本文 END $mbody=jcode::jis($body); #Sendmailで送信する。 open(MAIL, "| $SENDMAIL -i -t -f $mail") or die("ERROR: exec sendmail."); print MAIL $header, $mbody; close MAIL; というコード-です。 なにが原因かおわかりの方宜しくお願いします。

    • ベストアンサー
    • Perl
  • sendmailで送信したメールが届かなくなった。

    cgiからsendmailを使用してメール配信しています。 今までは問題なく動作していたのですが、最近、一部のお客様でメールが届かなくなったそうです。 迷惑メールとして拒否されているようです。 以下、cgiからsendmailを使用して、zzzz@zzzz.or.jpからxxxx@xx.so-net.ne.jpへメールを飛ばした例です。 迷惑メールに勘違いされるようなところは無いと思いますが、どこか変なところがありますでしょうか? 以下、見られてまずい部分は、****でマスクしています。 ■Perl(メール送信) if (!(open(OUT,"| $sendmail -t -i -f zzzz\@zzzz.or.jp"))) { &error; } print OUT "To: xxxx\@xx.so-net.ne.jp\n"; print OUT "From: zzzz mail<zzzz\@zzzz.or.jp>\n"; print OUT "Reply-To: zzzz mail<zzzz\@zzzz.or.jp>\n"; $mail_subject = &mimeencode($mail_subject); print OUT "Subject: $mail_subject\n"; print OUT "Mime-version: 1.0\n"; print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n"; print OUT "Content-Transfer-Encoding: 7bit\n\n"; &jis($comment); print OUT "$msg\n"; close(OUT); ■xxxx@xx.so-net.ne.jpが受け取ったときのメールヘッダー(Outlook Expressで確認) ■cgiで、zzzz@zzzz.or.jpからxxxx@xx.so-net.ne.jpへメール送信 Return-Path: <zzzz@zzzz.or.jp> Received: from [172.23.*.***] by ms78 with LMTP for <xxxx@xx.so-net.ne.jp>; Tue, 01 Dec 2009 12:45:58 +0900 Received: from www.zzzz.or.jp (www.zzzz.or.jp [210.166.**.**]) by imx01.ms.so-net.ne.jp with ESMTP id nB13jwqP028600 for <xxxx@xx.so-net.ne.jp>; Tue, 1 Dec 2009 12:45:58 +0900 (JST) Received: by www.zzzz.or.jp (Postfix, from userid 80) id A2B9D5A549; Tue, 1 Dec 2009 12:45:57 +0900 (JST) To: xxxx@xx.so-net.ne.jp From: zzzz mail<zzzz@zzzz.or.jp> Reply-To: zzzz mail<zzzz@zzzz.or.jp> Subject: =?ISO-2022-*********************?= =?ISO-2022-******************?= Mime-version: 1.0 Content-Type: text/plain; charset="ISO-2022-JP" Content-Transfer-Encoding: 7bit Message-Id: <20091201034557.zzzzzz@www.zzzz.or.jp> Date: Tue, 1 Dec 2009 12:45:57 +0900 (JST) 以上、よろしくお願いします。

  • sendmailの動作確認

    CGIプログラムを勉強し始めて、まだ数ヶ月の初心者です。 CGIの処理結果をメールで返すというプログラムをつくっているのですが、sendmailでサーバーエラーを起こしているようです。 サーバー自体は、DOS_VマシンにNetBSDを入れたものです。WEBサーバーとして問題なく動いています。 会社のサーバーなのですが、作り上げた担当者はもうおらず、どういう構成になっているか詳しいところまではよくわかりません。sendmailのパスはわかり、それで単純にメールを返すようなプログラムを組んでみたのですが、それでもサーバーエラーになります。 プログラムは以下のような簡単なものです。 #!/usr/bin/perl $sendmail = '/usr/sbin/sendmail'; $to = 'aaaa@bbbb.jp'; $from = 'cccc@dddd.jp'; $subject = 'TEST'; $mes = <<"EOF"; TEST MAIL EOF open(MAIL, "| $sendmail -t"); print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL $mes; close(MAIL); exit; プログラム的におかしなところはありますでしょうか? 実際、sendmail自体がちゃんと動作しているのかもわかりません。確認する方法というものはあるのでしょうか? よろしくお願いいたします。

専門家に質問してみよう