電子書籍の厳選無料作品が豊富!

現在1万人のメール登録会員がいます。
会員向けに週2回程度メールを一斉配信しなければならなくなったのですが、方法がわからず苦戦してます。このままでは、落ち着いて夜も眠れません。
皆様のご協力を、よろしくお願いします。

現在、celeron2.5GHz 512MBでOSがLinuxの専用サーバを使用しております。
使用可能なソフトは、PHP、sendmail、MySQLです。この3つに関しては中級程度の知識があり、それなりに使いこなせます。
はじめは、1万件のメールアドレスをMySQLに登録、PHPでfor文を使いデータベースから1件ずつアドレスを抽出、sendmailで送信、というプログラムを単純に1万回繰り返せばよいと思ったのですが、いろいろ調べているうちに不安になってきました。
メールが送れたかどうかの確認がとれないことや、命令文が途中で止まってしまってもわからないこと、サーバーへの負荷(メール専用ではないので)、セキュリティーの問題などが心配です。
あと、会員の8割は携帯のメールアドレスです。これも心配の種です。

対処方法として考えられるのは、
1.専門のメール配信代行業者に依頼する
2.自前のサーバで堅牢なシステムを構築する
だと思うのですが、
1の場合、会員登録の画面や登録内容など、細かい仕様を変更できるところがあるのでしょうか。
2の場合、このサーバのシステム構成で一斉メール配信が可能でしょうか。
また、可能であればどのようなソフトと仕組みを使えばよいのでしょうか。
ご教授のほどを、よろしくお願いいたします。

A 回答 (4件)

>1,サーバの負荷


>2.時間
>の目安は、どんな感じなのでしょうか。

およそ2000件強のメールを送るのは、「DBから抜き出し」「1件毎に送信」で4、5秒程でしょうか。

負荷はわかりません。送信専用サーバーではないですが、その間に極端に負荷などかかったことはありません。
サーバーのスペックにもよるでしょうが、あなたのスペックであれば問題ないと思います。

メール送信より1万件のSQLでのSELECTのほうが負荷が大きいと思いますよ(笑)

>あと、gentaroさんの場合、2500件全てメールが送られた>事をどのように確認していますでしょうか。

送られたことの確認に関しては、
Return path や Error To に指定した自分のメールに何も返ってきていないこと、DBの中に自分のメアドも数件含めていますので、そこにちゃんとメールが送られてくること、ですかね。あと、DBのテーブルに、最終送信日付を入れていますので、やろうと思えばこれで確認もできます。
    • good
    • 0
この回答へのお礼

丁寧にありがとうございます。
2000件のメールを送るのに4、5秒程度とは、速いですね。
メールの確認の仕方も、参考になります。
もう少しいろいろな角度の回答を待ってみたいと思います。
(ポイントは後でお付けいたします。)

お礼日時:2005/05/15 13:20

mb_send_mailなどで送信して、戻り値True、Falseで判断すればよろしいんじゃないでしょうか?



2500件程度の一括送信なら、現在何度も行っています。

詳しくはありませんが、たぶんsendmailは一度送信データをキューに貯めるはずですので、処理が追いつかないということはないと思いますよ。

テストが心配なら、ご自分のメアドを数千件登録して、実際に送信、受信した数と合わせてみてはどうですか?

この回答への補足

ご回答、ありがとうございます。
おかげさまで、だんだん解ってきました。
mb_send_mailの戻り値で判別すればよいわけですね。

できれば下記の事もお教え願えないでしょうか。
実際、送信データをキューに貯めて1万件のメールを送るのにかかる
1,サーバの負荷
2.時間
の目安は、どんな感じなのでしょうか。
あと、gentaroさんの場合、2500件全てメールが送られた事をどのように確認していますでしょうか。
よろしくお願いします。

補足日時:2005/05/13 17:07
    • good
    • 2

何万何十万件もの膨大なメールを送信したことがないので確実なアドバイスではありませんが、その程度であれば問題ない気がします。


1万回繰り返すのが不安であれば、時間差で500件程度に区切って送る、ではどうですか?
送信失敗時のことが心配なら、テーブルに送信日時の項目作って、送信の度に更新していけば、後で結果わかりますよね。
専用サーバーですから、その程度の抽出、送信は負荷の心配もないでしょう。

携帯ユーザはメアドの変更が頻繁ですから、そのメンテナンスが一番大変な作業だと思います。

セキュリティとは例えばメアドが外部に漏れる、ということですか?個人の実名や住所ではないですから、しっかりとしたサーバー管理とDBのセキュリティを考えてシステムを作ればいいと考えますが。どのみちWebサーバーにデータを置くということは100%の安全はありませんし。

この回答への補足

早速のご回答、ありがとうございます。
もう少し教えてください。

送信の度に更新というのは、sendmailの場合、どうやって送れたかを確認すればよいのでしょうか。
PHPでメールヘッダを付けて送信するタイミングでで更新するんでしょうか?
あと、心配なのはfor文の処理が速すぎてメールを送る処理が追いつかなくなり、サーバに不具合が出るということは無いんですか?
実際に試そうにも、全会員に送ることもできないので。
すみませんが、よろしくお願いします。

補足日時:2005/05/13 12:16
    • good
    • 0
この回答へのお礼

いろいろとご説明いただき、助かりました。
教えていただいたことを参考に、プログラムを組み立てたいと思います。
また、機会があったらご指導ください。
ありがとうございました。

お礼日時:2005/05/17 09:00

なんかSpam業者のような気がするんですが・・・



過去の質問にも類似のものがあるので、参考にしてください。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1277089

この回答への補足

早速のご回答、ありがとうございます。
それにしても、Spamとはひどい言い方ですね。
ちゃんと合法的に会員登録していただいた方が対象となっております。
過去の記事は既に読んでおりますし、未だわからないので質問させていただきました。
趣味ではなく企業としてのメール配信で、個人レベルの問題ではないので、苦しんでいるのです。

補足日時:2005/05/12 11:15
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!