• ベストアンサー

sendmailで複数の宛先にメールする方法

sendmailで複数の宛先にメールするにはどのような記述にすればいいですか? print(MAIL "To: info\@goo.ne.jp, admin\@goo.ne.jp\r\n"); とかって書けばいいんでしょうか?うまくうごかないのですが・・・。 よろしくお願いいたします。

  • Perl
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • inoue64
  • ベストアンサー率29% (334/1115)
回答No.1

カンマ区切りは正しそうですが、 カンマの後に、空白を入れないで試したらどうですか 「参考」URL: http://www3.ocn.ne.jp/~koshino/sendmail.html

katsudon
質問者

お礼

inoue64さん、slackwareさん、Head_Syndicateさん みなさん、大変早いアドバイスありがとうございました。 カンマで区切ったあとのスペースをはずしてみたところ たしかにメールが送られてきました。 たったひとつのスペースなんですが、動かないものですね。 本当にありがとうございました!!

その他の回答 (2)

回答No.3

もしそのsendmailが実際にはqmailであった場合(プロバイダによっては そうしているところも多いでしょう)、 カンマを取って半角スペースひとつに置き換えてみてください。 qmailで偽装したsendmailは大体オリジナルと互換なのですが いくつか注意するところがあります。親切なプロバイダなら そのあたりをどこかで解説してあるかもしれませんから、探して みてください。 あと、 print(MAIL "To: info\@goo.ne.jp\r\n"); print(MAIL "To: admin\@goo.ne.jp\r\n"); とする方法もあると思います(手元に実験環境がないので試して いませんが)。これがうまくいくなら、カンマ、スペース に関わらず使えるのでより汎用性が高いスクリプトとなると 思います。 それでもダメだったら…Sendmail.pmやらSocketを直接叩くに至る まで、メール送信のためのモジュールはいくつかありますので そちらを使うことも検討してもいいかもしれません。sendmailを 使うことだけが唯一の手段ではありませんので。

  • slackware
  • ベストアンサー率59% (22/37)
回答No.2

プログラムの前後が記述されていないので、外しているかもしれませんが. アドレスを一つだけ書いた場合は、正常に送信できるのですか? 私は、 --> #!/usr/bin/perl open(MAIL, "|/usr/sbin/sendmail -t"); print MAIL "From: hoge@dokokano.domain\r\n"; print MAIL "Subject: Perl de mail\r\n"; print MAIL "To: xx@sokorano.domain, yy@kokono.domain\r\n"; print MAIL "\r\n"; print MAIL "Perl de mail\r\n"; close(MAIL); exit; <-- というような記述をして複数の宛て先にメールを送信できました.

関連するQ&A

  • Perl(^^♪sendmailの使い方

    sub mail { # ここからロジック $admin = 'info@uhoo.jp'; open(MAIL, "|$sendmail $admin"); #本番用 と宣言しないと$adminにメールが送信されません。 $admin = 'info@uhoo.jp'; sub mail { # ここからロジック open(MAIL, "|$sendmail $admin"); #本番用 と$adminを宣言するとちゃんと$adminに送信されます。 ちなみに、 $admin = 'info@uhoo.jp'; sub mail { # ここからロジック open(MAIL, "|$sendmail $admin"); #本番用 print MAIL "From: $fn <$admin>\n"; とすると、$adminの内容は表示されますので、$adminに値は 入っています。 sendmailの使い方が間違っているのでしょうか?

    • ベストアンサー
    • CGI
  • sendmailでFROMに勝手に@~が追加される

    またまた質問です。 sendmailでメールを送っているのですが、 送信者の決定の所で、 $t_to="dareka@mail.co.jp"; $from = "admin@info.com"; ~略 print MAIL "To: $t_to\n"; print MAIL "From: $from\n"; ~略 $from = "admin@info.com"; とすると届いたメールの送信者は admin@info.com@www1000.wh.ocn.ne.jp になってしまいます。 つまり、送信者決定のところで、 「@www1000.wh.ocn.ne.jp」というのが 勝手に追加されてしまうんです。 これでは存在しないアドレスになり返信ができません。 同じような症状の出た方、いらっしゃいますでしょうか? ああ、もう期限が無いッス・・・。

    • ベストアンサー
    • Perl
  • sendmailでの複数メールアドレスへの送信

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

    • ベストアンサー
    • CGI
  • 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
  • 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が上手く動かないのかメールが届きません

    こんにちは。 sendmailが上手く動かなくて困っています。特にエラーは出ないのですが、メールが全く届きません。 以下プログラムです。(必要そうな箇所だけ) $sendmail = '/usr/sbin/sendmail'; $mail ='mail@xxx.xx'; $msub = 'メールタイトル'; &mailto if ($sendmail && $mail); sub mailto { $mcom = $FORM{'comment'}; $mcom =~ s/&lt;/</g; $mcom =~ s/&gt;/>/g; # メール本文 $mbody = <<"EOM"; $mcom -------------------------------- ホスト名:$host ブラウザ:$ENV{'HTTP_USER_AGENT'} -------------------------------- EOM if ($msub eq ""){ $msub = NO Subject; } &jcode'convert(*msub,'jis'); &jcode'convert(*mbody,'jis'); open(MAIL,"| $sendmail -t") || &result; print MAIL "To: $mail\n"; print MAIL "From: $mail\n"; print MAIL "Subject: $msub\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 "$mbody\n"; close(MAIL) || &result; } プログラムは一言フォームからコメントを受け取るものです。 jcodeの読み込み、decode等は正常に行われており、openやcloseの前後にprint $mbodyなどしてみても正常に表示されることから、確かだと思います。 他の有名なCGIサイトさんのスクリプトや本等を参考に自作したもので、もちろんそれらのメールフォームは正常に動きます。 ですから、何か小さなミスをしているだけだと思うのですが、それが何なのか見つけることが出来ません。 もし何かお気づきの点がありましたら、教えていただければと思います。

    • ベストアンサー
    • Perl
  • 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
  • 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
  • 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

     今、HTMLの「form」タグからsendmailを使用してメールへ送るというCGIを組んで いるのですが、 $mailto='xxx@xx.xx'; と送信先のメールアドレスを設定し、 print MAIL "To: $mailto\n"; で送信させるという方法をとっています。  いままで、1メールアドレスに送信させているのですが、今回複数のメールアドレス に送るように設定したいのですが、うまくいきません。  どなたかアドバイスをいただけないでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう