• ベストアンサー

phpでmail()関数以外のやり方について

PHPでmailを複数配信するのですが、 マニュアルサイト http://jp.php.net/manual/ja/ref.mail.php でmail()関数 を見ると 『mail() 関数は、大量のメールをループ内で送信するには 向いていないことに注意しましょう。』 とあります。 そして PEAR::Mail http://pear.php.net/package/Mail や PEAR::Mail_Queue http://pear.php.net/package/Mail_Mime を続けて紹介しているのですが ここからは英語なのでサッパリわかりません。 どなたかご教授願えませんか

noname#17562
noname#17562
  • PHP
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

「大量のメール」の量にもよりますが、1時間に 数百通程度なら問題ないのではないでしょうか? (ただし大量におくると上位ISPからスパマーとして 取り締まられる可能性はありますが) とりあえず、system系の関数で、標準出力から sendmailコマンドを使うという手もあります。

noname#17562
質問者

補足

有難う御座います。 >「大量のメール」の量にもよりますが、1時間に数百通程度なら問題ないのではないでしょうか? 一気に千通ぐらい同じ内容で送信したいです。 (スパマーではありません) >(ただし大量におくると上位ISPからスパマーとして取り締まられる可能性はありますが) 何件くらいまで大丈夫ですか? >とりあえず、system系の関数で、標準出力からsendmailコマンドを使うという手もあります。 具体的なサンプルコードどこかに落ちてませんか? あと、ここOKWEBなんかはPHPで画面出しているみたいですが、ここから送られてくるメールマガジンはどんな仕組みで大量配信してるのでしょうか? スパマーとして取り締まられない対策はどうしているのでしょうか?

その他の回答 (1)

  • kaz33
  • ベストアンサー率60% (20/33)
回答No.2

私はopenでSendmailに渡してます。 $fp = popen("/usr/sbin/sendmail -t -f $from", "w") or die("OPEN ERROR"); fputs($fp, "$head") or die("PUTS ERROR1"); fputs($fp, "To: $mail\n") or die("MAIL PUTS ERROR"); fputs($fp, "$body") or die("PUTS ERROR2"); pclose($fp); 大量メール送信は経験ないので何とも言えませんが、 一気に大量のコネクションを取るようなものはスパム扱いになるのではないでしょうか・・ BCCに1000件のアドレス組み込むとかは×かと(^^; 何件までならセーフなのかは分かりません(--;

関連するQ&A

  • PEAR の Mail/Queue.php で文字化け。

    タイトル通り、文字化けが解消できません。 いつも他の事は全てUTF-8 でやっているのですが メールは [ISO-2022-JP] を使わないといけないみたいですね。 PEAR を使わないで [mb_send_mail] を使っていた時は何もトラブルは無かったのですが。 以下、長いですが宜しくお願いいたします。 CENTOS 5 Mysql 5.0.45 MySQL の文字セット: UTF-8 Unicode (utf8) PHP 5.0 PEAR 以下の通りで運用しています。 DB 1.7.13 stable Mail 1.1.14 stable Mail_Mime 1.5.2 stable Mail_Queue 1.2.2 stable Mail_mimeDecode 1.5.0 stable PEAR 1.4.9 stable メールを複数人に送る為に [Mail/Queue.php] を 利用しようとしています。 (ほぼ、サンプルで公開しているものをそのまま使わせてもらっています。) http://php.atpedia.jp/pear/ja/package.mail.mail-queue.mail-queue.tutorial.html メールを作成するPHPは、[UTF-8] にしています。 メールをデータベースに入れるときに [ISO-2022-JP] に変換しています。 取り出して送信する時にも変換しなくてはいけないのか? 初めてPEARを使うのもあって、動作自体が良く分からない為 文字化けに対処できずにいます。 お分かりになる方、宜しくお願いいたします。 キューに入力前に本文作成用ページ このページは、UTF-8 です。 $subject $message 送信対象のID をこのページから下のページに [POST] で送信 キューに入力用ページ *サンプルを元に <?php mb_language("Ja"); mb_internal_encoding("utf8"); include './config.php'; /* db_options と mail_options をここで使用する */ $mail_queue =& new Mail_Queue($db_options, $mail_options); /*-----PEARでデータベースに接続しているが理解できないので、再度接続。。 ココから---------*/ require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); mysql_query('set character set utf8'); /*----------------------------------データベースに接続 ココまで----------------------------*/ /*----------------------------------この変換のタイミングがおかしいのでしょうか?-----------------*/ $subject = mb_encode_mimeheader($subject,'ISO-2022-JP'); $message = mb_convert_encoding($message,'ISO-2022-JP','UTF-8'); /*----------------------------------ここまで変換-----------------------------*/ $sql = "SELECT * FROM member WHERE **************"; $rst = mysql_query($sql, $con); //件数を数える $recmax = mysql_num_rows($rst); //ループでID、名前、メールアドレスを取り出す while($rows = mysql_fetch_array($rst)){ $id = $rows["customerID"]; $name = $rows["name"]; $mail = $rows["mail"]; $from = '***@*******.net'; $to = $mail; $hdrs = array( 'From' => $from, 'To' => $to, 'Subject' => $subject ); /* 有効なメールを構築するため、Mail_mime() を使用する */ $mime =& new Mail_mime(); //文字コード変換する $mime->setTXTBody($message); $body = $mime->get(); $hdrs = $mime->headers($hdrs); /* メッセージをキューに追加する */ $mail_queue->put( $from, $to, $hdrs, $body ); } $con = mysql_close($con); ?> 送信用ファイル *サンプルそのまま <?php include './config.php'; /* スクリプトがコールされるたびに何通のメールを送信するか */ $max_amount_mails = 50; /* 設定から db_options と mail_options を再び使用する */ $mail_queue =& new Mail_Queue($db_options, $mail_options); /* メッセージを実際に送信する */ $mail_queue->sendMailsInQueue($max_amount_mails); ?>

    • ベストアンサー
    • PHP
  • PHPのメール関数について

    メールマガジン発行を考えているのですが、 読者のメールアドレスをMysqlに格納し、 PHPのメール関数で配信しようと思っています。 そこで、PHPのメール関数とは、 PHP→そのサーバのMTA→相手MTA と行くのでしょうか? それとも、 PHPメール関数自体が直接DNSサーバを探し確認した上で、 相手MTAに送信するのでしょうか? (つまりMTAを利用しないのでしょうか?) 基本的な質問で申し訳ございません。 MTAを利用するのなら配信スピードがqmailの方が 良いと聞きますので、sendmailから変更しようかと 思っています。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PEAR::って何でしょうか?PHPに出てくるヤツです。

    最近PHPを触ってみているのですが、PHPのマニュアルサイト「http://jp.php.net/manual/ja/」を見ていると、 ところどころにPEAR::○○(○○は関数名)を参照して下さいとありますが、この「PEAR::」って何なのでしょうか? サイトhttp://pear.php.net/には 冒頭に PEAR is a framework and distribution system for reusable PHP components. とあります。 PHPのフレームワークみたいな事を書いてそうですが、よく分かりません。 .netフレームワークのようなものだと思えばいいのでしょうか? 日本語でわかるサイトは何のでしょうか? どの程度認知されてどの程度使われているのでしょうか? 具体的にどうすれば何を使えるのでしょうか? 何もわからないので何でも教えてください。

    • ベストアンサー
    • PHP
  • 【php】PEAR Auth::setLoginCllback()の使

    【php】PEAR Auth::setLoginCllback()の使い方 http://pear.php.net/manual/ja/package.authentication.auth.auth.setlogincallback.php の説明に載っていた Auth::setLoginCllback() の使い方がイマイチよくわかりません。 あらかじめ関数を作っておいて・・・・ // ログイン成功 function LoginCallback( ){    echo "ログインに成功しました"; } ログインが完了した時に実行させたい場所に setLoginCallbackを置けばいい $authobj->setLoginCallback("LoginCallback"); と思っていたんですが、うまく動きません。 この、setLoginCallbackはどのように使うのが正しいのでしょうか?

    • ベストアンサー
    • PHP
  • php pear

    php5にpearをインストールしました。 早速、c:\php>pear install MAIL としたところ、 No releases available for package "pear.php.net/MAIL" Cannot initialize 'channel://peara.php.net/MAIL', invalid or missing package file Package "channel://pear.php.net/MAIL" is not valid install failed というエラーメッセージが出ます。 どこを直したらよいのか、分かりません。 アドバイスお願いします。

    • 締切済み
    • PHP
  • 日本語メールの送信する関数

    日本語のメール送信には、mail関数のラッパー関数であるmb_send_mailが使い勝手が良いようですが、mb_send_mail関数マニュアルにMaill関数を使った日本語メール送信サンプルが載っています。 http://jp.php.net/manual/ja/function.mb-send-mail.php#77899 これって、gmail、Yahooメールなど自分がテストした限りでは、特に文字化けなどせず問題ありません。なので、ライブラリなど使わずに、Mail関数でいいんじゃないかと思います。 このサンプルのmail関数を使った日本語メール送信で特に問題になることはあるのでしょうか? ちなみに、関係ないと思いますが、マニュアルにサンプルを乗せているこの人たちは何者(マニュアルプロジェクトメンバー?)なのでしょうか?

    • ベストアンサー
    • PHP
  • 存在しないメールアドレスかどうかのチェック

    PHPのNet_SMTPにて、メール送信するプログラムを作成しています。 http://pear.php.net/manual/ja/package.networking.net-smtp.php を参照して作成しているのですが、 存在しないメールアドレスかどうかのチェックは可能でしょうか? ユーザーが誤ったメールアドレスを設定していた場合、 システムはそのメールアドレスにメール送信するのですが、 当然誤ったメールアドレスなので、ユーザーには届きません。 このような事を回避するために、 システムがメールを送信する際に、 この世に存在するアドレスかどうかチェックする術はあるのでしょうか? 返却されたメールを解析するしか無いのでしょうか… ※.アドレス内に「@」が無いなどのチェックではなく、   存在するアドレスかどうかのチェックが可能かどうかになります。

    • ベストアンサー
    • PHP
  • PHPのmail関数で送信できない

    Fedracore3でPHPプログラムの制作をしています。 今問題となっているのが、mail関数でメールを送信する部分です。 テストしているスクリプトです。 <?php $rst = mail("xxx@xxxx.com", "送信テスト", "Hello !!", "from: xxx@xxx.info"); if($rst){ print ("メール送信テスト完了"); }else{ print ("メール送信テスト失敗"); } ?> かならず「メース送信テスト失敗」になり、実際送信している先のメールアドレスにも届きません。 ちなみにコンソールからsendmailコマンドで直接入力すると送信できるので、sendmailの設定や名前解決などは問題ないと思われます。 現在の環境は以下の通りです。 OS:Fedracore3 PHP:Version 4.3.9 Apache:2.0.52 (Fedora) ちなみにi18n_convertやi18n_mime_header_encodeなどの関数も画面が真っ白になるだけで動きません。 システムの設定かと思うのですが、思い当たる部分が見当たらないので困っています。ご教授方よろしくお願いいたします。

    • 締切済み
    • PHP
  • mail関数を使うと遅いので

    PHP初心者です。よろしくお願いします。 現在、予約メールシステムを構築しています。 PHP+MySQLです。(smtpはpostfixです) 1日一回、メールアドレス、件名、本文、時間を格納したTBLを作成し、 メール送信するPHPを5分毎にcronで動かしています。 メール送信PHPは 該当する時間のレコードを抽出してmail関数を使い送信しているのですが 1秒で5件しか送信されません・・・ 質問1 mail関数だとこんなものなのでしょうか?(時間がかかるのですか?) 質問2 短時間で大量のメールを送信する場合、どのような方法があるのでしょうか? 以上、よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでメール読込・・・

    いつも親切丁寧にありがとうございます。 PHPで受信したメールを読み込みしようとしています。 メールをパイプ出来る事がわかったのですが、紹介しているサイトの説明で1点わからない部分があります。 1 # mimeDecode.php が必要 (以下2行でインストール) 2 # # pear install -f PEAR-1.6.0 3 # # pear install Mail_Mime 参考にしているサイト(http://spinnen.jp/keitaip.htm)←無断掲載すいません。 mimeDecode.phpはゲットしましたが、2と3の【インストール】の意味がわかりません。 サーバーは【さくらインターネット】のレンタルサーバーを使用しています。 ここで言う【インストール】とは何をすれば良いのでしょうか? PHP.iniへの記載とかそんな事を示すのでしょうか? それではいつも質問がおおざっぱですが、なにぶん専門用語の知識が少ないのでご了承ください。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう