• ベストアンサー
  • 困ってます

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件以上になると送信されません。 なにが原因であるかと、対応策を教えて下さい。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数500
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.2

複数のメールアドレスを区切るのはセミコロンじゃなくて カンマ半角スペース だったとおもいますが、、、 それはそれとして、1行の制限はありますよ。 Bcc: メールアドレス1 Bcc: メールアドレス2 Bcc: メールアドレス3 のように、受け取り手1件ごとにBccを1行作るようにするのが最もらくだと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

メールアドレスの区切りがカンマのところをセミコロンにしてしまったミスでした。 回答ありがとうございました。 ところで メールヘッダーに Bcc: メールアドレス1 Bcc: メールアドレス2 Bcc: メールアドレス3 という記載が出来ることをはじめて知りました。

その他の回答 (1)

  • 回答No.1

どのような環境で利用されているのか不明ですが、 変数($MAILTO)に設定できる文字数に上限があるのでは?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

メールアドレスの区切りがカンマのところをセミコロンにしてしまったミスでした。 回答ありがとうございました。

関連するQ&A

  • 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 = '/usr/sbin/sendmail'; $MAILTO = '<自分のメールアドレス>'; if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } # フォームデータの復元 foreach $pair (split(/&/, $query)) { ($key, $value) = split(/=/, $pair); # 文字のデコード $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $FORM{$key} = $value; } # MIMEエンコード $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($FORM{'name'}); $mail_subject = mimeencode($FORM{'subject'}); # 文字コードの変換 $body = jcode::jis($FORM{'msg'}); # メールヘッダーの生成 $header = <<END; To: $mail_to From: $mail_from<$FORM{'email'}> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/html; charset=ISO-2022-JP END # メールの送信 open(MAILTO, "| $SENDMAIL -i -t -f $FORM{'email'}") or die("エラー:sendmailへのパイプが開けません"); print MAIL "$header, $body"; close MAIL; # サーバー出力 print <<END;

    • 締切済み
    • CGI
  • sendmail実行時のエラー

    受け渡されたパラメーターをセットしてsendmailを実行すると「Premature end of script headers:」というエラーになります。 試しにパラメーターを直セットしてsendmailすると、文字化けはしますが送信はされました。 メールでなく、ファイルに出力してみたところ、 From: " =?ISO-2022-JP?B?GyRCJDUkRiQ1JEYbKEI=?= "<xxxx@xxxx.ne.jp> Subject: =?ISO-2022-JP?B?GyRCIXo7cU5BQEE1YRsoQg==?= この2つだけが文字化けしていて、本文は大丈夫でした。 ソースは以下の通りです。 require './jcode.pl'; # MIMEエンコードライブラリを使う $mimew = './mimew.pl'; ・・・・・略 # MIMEエンコード if (-e $mimew) { require $mimew; $subject = &mimeencode($mail_sub); $from = &mimeencode("From: \"$in{'cname'}\" <$in{'mail'}>"); } else { $subject = $mail_sub; &jcode'convert(*subject,'jis'); $from = "From: $in{'mail'}"; } ・・・・パラメータのコンバート&jcode'convert(データ, 'jis'); ・・・・メール本文($mail_body)のセット $err = 0; open(MAIL,"| $sendmail -t") || $err = 1; print MAIL "To: $mailto\n"; print MAIL $from, "\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n\n"; print MAIL "$mail_body\n"; close(MAIL); 文字化けもですが、まずはエラーを解消するにはどうしたらいいでしょうか。教えて下さい。お願いします。

  • 自動返信について

    以下のCGIでは$MAILTO に送信されますが、追加的に、申込者に自動返信(文章つき)をするにはどのように修正するのですか。 #! c:/perl/bin/perl require "jcode.pl"; require "mimew.pl"; $SENDMAIL = 'c:\sendmail\sendmail'; # sendmailのパス $MAILTO = 'のがわ <nogawa@example.net>'; # メールの宛先 # フォームデータの取得 if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } # フォームデータの復元 foreach $pair (split(/&/, $query)) { ($key, $value) = split(/=/, $pair); # 文字のデコード $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $FORM{$key} = $value; } # MIMEエンコード $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($FORM{'name'}); $mail_subject = mimeencode($FORM{'subject'}); # 文字コードの変換 $body = jcode::jis($FORM{'msg'}); # メールヘッダーの生成 $header = <<END; To: $mail_to From: $mail_from<$FORM{'email'}> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP END # メールの送信 open(MAIL, "| $SENDMAIL -i -t -f $FORM{'email'}") or die("エラー:sendmailへのパイプが開けません"); print MAIL $header, $body; close MAIL; # サーバー出力 print <<END; Content-type: text/html; charset=Shift_JIS <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title>めーるふぉーむ</title></head> <body> <p>メールを送信しました。</p> </body> </html> END

    • ベストアンサー
    • Perl
  • Apacheで受信できません

    Apacheを使用して、申し込みフォームで送信したのですが、受信できません。ログではhost not found. missing sender's addressとあります。どうすればよいでしょうか。以下はCGIです。ヤフープロバイダを利用しています。 ********** #! c:/perl/bin/perl require "jcode.pl"; require "mimew.pl"; $SENDMAIL = 'c:\sendmail\sendmail'; # sendmailのパス $MAILTO = '************'; # メールの宛先 # フォームデータの取得 if($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); } else { $query = $ENV{'QUERY_STRING'}; } # フォームデータの復元 foreach $pair (split(/&/, $query)) { ($key, $value) = split(/=/, $pair); # 文字のデコード $value =~ tr/+/ /; $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg; $FORM{$key} = $value; } # MIMEエンコード $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($FORM{'name'}); $mail_subject = mimeencode($FORM{'subject'}); # 文字コードの変換 $body = jcode::jis($FORM{'msg'}); # メールヘッダーの生成 $header = <<END; To: $mail_to From: $mail_from<$FORM{'email'}> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP END # メールの送信 open(MAIL, "| $SENDMAIL -i -t -f $FORM{'email'}") or die("エラー:sendmailへのパイプが開けません"); print MAIL $header, $body; close MAIL; # サーバー出力 print <<END;   中略 END

    • 締切済み
    • CGI
  • 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で本文が文字化けします

    sendmailを使ってメールを送信していますが、下記処理中で、charsetの指定を入れないと本文は文字化けしないのですが、指定を入れると文字化けしてしまいます。 ※ちなみに、OutlookExpressはどの場合でも文字化けしないで受信できました。 どなたかご存知のかた教えていただけないでしょうか。 ソースは以下のような感じです。 require "/XXX/jcode.pl";# 文字列変換 require "/XXX/mimew.pl";# MIME エンコード # メールHEADER作成 $head = "From: $FromUser\n"; $head .= "To: $ToUser\n"; $head .= "Subject: $Subject\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; $head .= "Content-Transfer-Encoding: 7bit\n"; $head .= "\n"; # JISコード変換 $code = &jcode'convert(*head, 'jis'); # エンコード $header = &mimeencode($head); # メール本文作成 $body = "メール送信のテストです\n"; $code = &jcode'convert(*body, 'jis'); if (open(MAIL,"|/usr/lib/sendmail -f $FromUser $ToUser")){ print MAIL $header; print MAIL $body; print MAIL "\n\n"; close(MAIL); }

  • 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) 以上、よろしくお願いします。

  • perl   フォームメール送信の文字化けについて

    フォームメール送信の文字化けについてお教え下さい。 よろしくお願い致します。 まずは環境より申し上げます。 環境 xampp-win32-1.7.7-VC9 同封 apache2.2.21 php5.3.8 perl 同封されているもの -----------------------------  xmailサーバーも動いています。 内部、外部、外部から外部、ともに正常に送受信できています。 以前はANHTTPDとperlとsendまね~るで問題なく動いていましたが このたびPHPが必要になりましたので以前のperlをアンインストールしてXAMPPをインストールしました。 以前からの自作のメールフォームを設置してメールを送信すると 受付確認メールと問い合わせ報告メールのすべてが文字化けしています。 一応 文字コードはUTF-8で mail.html、 perlプログラム、ともに統一しています。 apacheのhttpd.confの中にはAddDefaultCharset・・・の設定項目がなぜかありませんので apacheについては文字コードの設定などはおこなっておりません。 症状ですが メールフォームに入力して確認ボタンを押すと現れる確認画面は 文字化けしておりません、高崎、申す、表示という文字も化けていません。 このあと送信ボタンを押すと メールは宛先へ正常に届きますが タイトルからすべてが文字化けで読む事はできません。 原因探しが三日くらい続き、気になって寝られません。 ひろいあつめて書いたコードですが、 よろしくお願いいたします。 # MIMEエンコード $mail_to = mimeencode($MAILTO); $mail_from = mimeencode($FORM{'name'}); $mail_subject = mimeencode($FORM{'subject'}); # 文字コードの変換 $body = jcode::jis($user_owner); # メールヘッダーの生成 $header = <<END; To: $mail_to From: $mail_from<$FORM{'email'}> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP # サーバー出力 print <<END; Content-type: text/html; charset=utf-8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> # メールの送信 open(MAIL, "| $SENDMAIL -i -t -f $FORM{'email'}") or die("エラー:sendmailへのパイプが開けません"); print MAIL $header, $body; close MAIL; 部分的で分かりにくいかもしれませんが どなたか どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • sendmail

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

    • ベストアンサー
    • CGI