• ベストアンサー

mail関数を使うと遅いので

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

  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • goojovi
  • ベストアンサー率100% (1/1)
回答No.2

同じようなシステムを以前構築したことがあります。 送信したいメールは一度に数千件でしたが、これを短時間に一気に流してしまうとスパムメールと判断されてしまった事がありました。 結局、ゆっくり処理させてサーバータイムアウトしないようにメールを小分けにしながら送信させましたが、1秒間に5件くらいというのは妥当なような気もします。 (私もNo.1の方がおっしゃるようにsystem()使いました。)

その他の回答 (1)

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

>1日一回、メールアドレス、件名、本文、時間を >格納したTBLを作成し、メール送信するPHPを >5分毎にcronで動かしています。 1日1回しか更新しないのに5分ごとにメールを 送信するのですか?1日1回だけメールをすれば よいのでは? それはさておき、メールの容量しだいなので、1秒 5件が送信できないのは果たしてすくないのか どうかは微妙ですね。かなり十分な量のようにも 感じますが。 メールを送るだけならsystem()系の関数で、 コマンドラインで処理を流してしまうという手も 考えられるので実験してみる価値はあるかもしれ ませんね。

jojo12345
質問者

お礼

>1日1回だけメールをすればよいのでは? 言葉足らずですみません・・・ メール作成条件の入ったTBLより翌日送信する(送信時間は0:00~23:55)メールだけを作成するのが、一日1回です。 >かなり十分な量のようにも感じますが これも説明不足ですみません 1回の送信に集中することを想定して、最大1万件は1回のcronで処理させる見積もりでした。 system()調べてみます。 お返事、ありがとうございました。

関連するQ&A

  • PHPのメール関数について

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

    • ベストアンサー
    • PHP
  • mail関数の587ポート対応に関して

    外部のSMTPサーバを利用して、メール送信するPHPのツールを稼動 させていましたが、セキュリティ対策の為、25ポートから587ポートへ 切り替えを行ったところ、以下のように設定しても送信できなくなってしまい ました。 《対応内容》 社内のファイアーウォールを587に変更 php.iniファイルを SMTP = 外部サーバアドレス smtp_port = 587 に設定して、 mail("***@XXXXX.co.jp", "題名", "メール本文", "From:○○@XXXXX.co.jp"); としました。 そもそもmail関数では587ポートは対応していないのでしょうか? 少し気になるのがサーバ側で認証をしている気がしています。 認証も含めて587ポート対応するような関数はどのようなものがあるでしょうか。。。 教えて下さい。 よろしくお願いします。

    • 締切済み
    • PHP
  • phpを使ってpostfixから送信したメールが迷惑メール扱いになってしまいます。

    サーバーOSはinuxのfedora core 6、メールサーバはpostfixを使っています。phpのmb_send_mail関数でメールの送信自体はできるのですが、自宅のPC(windowsvista,メーラーはwindowsメール)から受信した際に迷惑メールフォルダに振り分けられてしまいます。メール送信のphpファイルには「宛先、題名、本文」を変数に格納してmb_send_mail関数で実行するだけです。この他にphp上で追加の記述が何か必要なのでしょうか?見当もつかない状態ですので誰かお分かりになる方がおりましたら教えてください。あとサーバーのほうはホスティングなので外部にあり、リモート操作です。

    • ベストアンサー
    • PHP
  • send()関数で送信するメールの送信者名を指定したいのですが

    send()関数を使って、 メールを送信する際に、 送信者名に アンケート回答者様 という名前を入れたいのですが、 どうしても方法がわかりません。 send(宛先,件名,本文); という順番なのはわかりますが、 送信者名はどのようにすればいいのでしょうか。 ためしに send(宛先,件名,本文,送信者名); という順序で4番目に送信者名を持ってきてみましたが、 送信者名は変わりませんでした。 具体的なスクリプトは以下のとおりです。 //変数格納 $title = "アンケートの回答が届きました"; $from = "アンケート回答者様"; $body = "ユーザー入力文"; $mailheader = "From: $from"; //送信処理 mail($send,$title,$body,$mailheader); アドバイス宜しくお願いします。

    • ベストアンサー
    • PHP
  • mail関数について

    いつもお世話になっております。 phpのmail関数を利用して、 postfixにてメール送信の試験を行っています。 下記に記しました関数の $to がメールの送信先となります。 「to」に送信先を1つだけ登録した場合、 問題なくメールが送信できるのですが、 「to」に送信先を2つ登録した場合、 2つめのメールが送信できません。 $to に送信先を2つ以上入れたい場合、 どのような変更を加えればよろしいのでしょうか? ご教授のほどよろしくお願いします。 if ($name != "" and $from != "" and $title != "" and $naiyou != "" ) { if (mail($to, $title2, $naiyou2, "From:$from")) { echo "メールを送信しました"; } else { echo "メール送信失敗です"; }

    • ベストアンサー
    • PHP
  • PHPでメールが送れない

    OS: RedHat Enterprise Linux 4 PHP: 5.0.5 Postfix: 2.2.9 mail関数でメールを送信するだけの簡単なスクリプトを書きました。コマンドラインでphpを実行するとメールは送信されるのですが、ブラウザからのアクセスのときはメールが送信されません。 所有権の問題かと思いsendmail(sendmail.postfix)のパーミッション変更なども試してみましたが解決できませんでした。 このような状況の時、何処を見るべきか教えてください。

  • PHPを利用してメール送信時したときのSubjectの文字化け

    PHPを利用し携帯電話を使って、件名(Subject)と本文を入力して送信した後、送信元のアドレスに入力した件名と本文を返信するプログラムを作成しています。 しかし、件名の返信内容が送信内容とは違う形で返ってきます。(本文はそのまま返ってきます) 例:件名「あ」、本文「か」と入力し送信   返信内容→件名「=?ISO-2022-JP?B?GyRCJCIbKEI=?=」        本文「か」 現在使用しているPHPのバージョンは 4.4.6 です。 「mb_convert_encoding」や「mb_encode_mimeheader」といった関数も使用しているのですがうまくいきません。 どのように記述すればよいでしょうか? 解答お待ちしています。

    • ベストアンサー
    • PHP
  • メール送信について

    livedoorのSMTPサーバを利用して、メール送信するPHPのツールを 作りたいと思っています。 iniファイルを SMTP = smtp.livedoor.com smtp_port = 587 に設定して、 mail("***@infoseek.jp", "題名", "メール本文", "From:○○@infoseek.jp"); とおくることは可能なのでしょうか? 初心者ですみません。

    • 締切済み
    • PHP
  • php メールフォーム SMTP メールサーバー

     環境は、 windows7 32bit・ XAMPP version1.8.1(Apache MySQL) です。. phpを、 「PHP プログラミングの教科書」 にて、勉強中のものですが、『3-2 メールフォーム』のメールサーバーの設定で、つまってしまいました。  外部メールサーバーを、SMTPに指定して、メールを受け取るプログラムです。   外部サーバーに、 Yahoo(またはGmail ) を利用しようとして、つまっています。 「PHP プログラミングの教科書」の説明では、PHP設定ファイル(php.ini)のメール設定で、 デフォルトで、 --------------------------- SMTP = localhost smtp_port = 25 --------------------------- の部分を、 ↓ --------------------------- SMTP = xxxxx.xxxxx.com(メールサーバー) smtp_port = 25 username = xxxxx password = xxxxx --------------------------- と、変更・追加すれば、よいとのことで、 SMTP = smtp.mail.yahoo.co.jp smtp_port = 25 username = yahooのID password = yahooのパスワード と設定しました。 phpのファイルにアクセスすると、文字の入力から、送信までのページ進行には、問題ないのですが、メールが受信(または送信)されません。メール送信は、mb_send_mail関数を使用してます。ヤフーデリバーというものに、登録して、ヤフーのサーバーの情報などを確認しました。 メールソフト(outlook,thunderbirdなど)は、必要なのでしょうか?書籍にはなんの記述もないので、できるのかとおもってるのですが、ネットで調べると、Gmailと、メールソフトと、PEAR:Mailで、メールを送信する。という記述が多いのですが、基本的なことを把握してないと思いますので、ご指摘いただけたらと思います。よろしくお願いいたします。ヤフー 以下、phpのコードです。 <?php //サニタイズ関数の定義 function hsc($a){ return htmlspecialchars($a, ENT_QUOTES ,"UTF-8"); } $uname = hsc($_SESSION["uname"]); $email =hsc($_SESSION["email"]); $message =hsc($_SESSION["message"]); // メール本文の組み立て $to = "yahooの自分のアドレス"; $title ="【メールフォームより】"; $ext_header ="From : {$email}"; //本文を組み立てるヒヤドキュメント $body = <<<EOM --------------------------------------------------------------------- 【webサイトからのメール】 お名前:{$uname} メールアドレス:{$email} メッセージ:{$message} --------------------------------------------------------------------- EOM; //メール送信の実行 $rc = mb_send_mail($to, $title, $body, $ext_header); if(!$rc){ exit; }else{ $_SESSION = NULL; } ?> 試したことは、 ・ポート番号を、587に変更する。 ・php.iniのSMTPなどの前に、「;」があったので、それを削除した。

    • ベストアンサー
    • PHP
  • cronでphpを実行できない

    cronでphpを一部実行できない状態です 試しにメール送信処理のphpを作りcronで実行しまして送信できました しかし、mysqlで情報を取得しそれをメール送信するphpをcronするとNGです。 上記phpはブラウザからは問題なく処理できます 実行権限などでしょうか? 詳細な解決策を知っている人は教えていただきたいです

    • ベストアンサー
    • PHP

専門家に質問してみよう