PHPを使って定期的にメールをMysqlに挿入する方法は?

このQ&Aのポイント
  • 送られてきたメールをPHPなどで定期的にMysqlに挿入する方法を教えてください。
  • 保育園で保護者への一斉送信のためのメールアドレスの登録に使いたいです。同じ名前が複数回登録された場合は、遅い方を優先して上書きされるようにしたいです。
  • サーバの仕様上.forward.aliasは使えませんので、受信をトリガーに出来ずcronで定期的に受信をしたいと考えています。どのように実現できるでしょうか。
回答を見る
  • ベストアンサー

送られてきたメールをPHPなどで定期的にMysql

QRコードやリンクなどからメールを立ち上げ、本文内の「名前【なまえ】」の部分に名前を入れてもらい送信してもらったメールから、PHPを使って定期的にMysqlに挿入したいと考えていますが可能でしょうか。 保育園で保護者への一斉送信のためのメールアドレスの登録に使う予定です(ガラケーが多いです)。 同じ名前が複数回登録された場合は、遅い方を優先して上書きされるようにできればと考えています。 またサーバの仕様上.forward.aliasは使えませんので、受信をトリガーに出来ずcronで定期的(たとえば1分ごと)にphpを動かすようなかたちで受信をしたいと考えております。 諸先輩方、ご教授賜れないでしょうか。宜しくお願いします

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

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

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

同じようなことはやっています PEAR::Net_POP3でメールを読めば、送信元の情報や本文データなど読みとれます。 http://pear.php.net/manual/ja/package.networking.net-pop3.php MySQLへの登録は名前にあたる項目をユニーク属性にして INSERT ... ON DUPLICATE KEY UPDATE 構文で処理すれば上書きされていきます http://dev.mysql.com/doc/refman/5.1/ja/insert-on-duplicate.html ただし同姓同名がいたら上書きされるし、名前入力のブレ たとえば氏名の間にスペースが入ったり入らなかったりで同じ人からのメールでも 複数登録されていくことになりそうで、運用で細かくカバーしないといけないですね cronで定期処理をする場合はwgetなどでhttp経由で読んでやると 汎用性がたかくなると思います

makino03
質問者

お礼

ありがとうございます。意外なほど簡単に出来ました。 名前の上書きはご指摘のとうりで当初より保育園とも相談しておりました。 現状のメールアドレスを手書きしてもらうと、手間がかかりパソコンを触れる職員の不足で入力ミスも連発と新園生が入る繁忙期が重なるという状況を何とかしてほしいとの事だったのでこれで十分かと思います。 最終はリスト化したものを保育園の職員さんが確認し、実際にメールが届かない方には直接確認するとの事でした。 現場レベルで求められるものって最先端のものより使い慣れて浸透したぐらいのシステムなんだなと感じました。 ありがとうございました。

関連するQ&A

  • PHP+MYSQLについて

    PHP+MYSQLについて 速効!図解プログラミング PHP+MYSQLと言うの本の中で紹介されています。PHPとMysqlで作る会員管理システムについてこの本を元にして構成を変更したく考えています。下記の内容を実現するにはどの様な変更するとうまくいくのでしょうか? 画面遷移を トップページ ⇒ 登録画面(全項目登録) ⇒ 確認画面 メール送信完了画面 メールhttp://~ ⇒ 登録完了 ⇒ ログイン を トップページ ⇒ 登録画面(メールのみの登録) ⇒ 確認画面 メール送信完了画面 メールhttp://~ ⇒ 本登録(全項目登録) ⇒ 登録録完了 ⇒ ログイン この本をお持ちの方、勉強された方どの様な作りにしたらよいと思いますか? ちなみにこの本のサンプルはhttp://book.mycom.co.jp/suport のSection72-81です。 皆様なにとぞお力をお貸しいただけます様によろしくお願いいたします。

    • 締切済み
    • PHP
  • cronでphpを実行できない

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

    • ベストアンサー
    • PHP
  • .forwardを利用した、メールをトリガーにするPHPの起動について

    初めて質問させていただきます。 初めてなので、質問の仕方にも不手際があるかもしれませんが ご容赦ください。 サーバーはWEBアリーナさんのをお借りしています(webarenasuite2) メールはPostfixで受信しています。 <<目的>> メールの受信をトリガーにしてPHPプログラムを起動させようとしております。最終的にはメールの本文などのDBに取り込もうとしていますが、とりあえずプログラムを起動できるかを確認したかったのでメールの内容などは関係なくDBに適当な名前のテーブルを作成するようなプログラムになっています。 <<症状>> 対象のメールアドレスにメールを送ると、エラーメッセージなどは一切返ってきません。が、望む動作も一切しません。 直接test.phpをブラウザで動かすと、DBにテーブルを作成します(望んだ動きです)。 おそらくtest.phpを.forward経由で動かせていないのだろうと思いますが、その理由がわかりません。 自分が確認したことを以下に記します。 (1).forwardの置き場所 プログラム起動ではなく、メール転送の記述を行い、メールの転送が行われることを確認しました。.forwardの置き場所は間違えていないかと思います。 (2).forwardのパスの確認 .forwardには以下の記述がしてあります。 |"/usr/bin/php -q /home/*****/web/test.php" phpが/usr/bin/phpなのはおそらく間違いないかと思います。 また、絶対パスの指定はtest.phpにrealpathの記述を書いて 確かめました。 (3)パーミッションの確認 .forwardは600 test.php自体や、その上の階層のwebや*****、homeなどもパーミッションも実行権限を与えてみました。755などになっています。 以上です。 2日以上詰まってしまいました。 お手数をおかけしますが、お手すきの方がいらっしゃいましたら、よろしくおねがいします。

    • 締切済み
    • PHP
  • PHPの自動実行

    DBにメールアドレスを保持しておいて、そのアドレスに向かって一日の決まった時間にメールを一斉に送信することはPHPではできるのでしょうか? 会員登録フォームから入力されたデータに基づいて、条件にマッチした会員に向かって定期的にメールを送信したいと思っているのですが… なにかいい案・技術等ございましたらご教授ください。

    • 締切済み
    • PHP
  • メールをトリガーにPHPを実行したい

    初めまして、メールをトリガーにPHPを実行したいと思い、 下記のように.forwardを書きました。 ドメイン:example.com アカウント:hogehoge メールアドレス:info@hogehoge.example.com \info: "|user/bin/php /home/hogehoge/public_html/index.php" ですが、info@hogehoge.example.comにメールを送信しても実行してくれません。 どのように記述すれば良いのでしょうか? 環境 Linux Root /home/hogehoge Sendmail /usr/sbin/sendmail よろしくお願いします

  • phpとmysqlで出欠確認

    phpとmysqlを使い、出欠確認アプリのようなものを作りたいです。 操作としては 1.画面上で名前を選ぶ(タイプする) 2.確認画面がでてokを押す 3.出席登録しました このような簡単のものなのですが、phpの流れについて確認したいです。 管理者側で誰がいつ出席登録したか、また日付ごとに検索ができ、何月何日に誰が出席したか確認したいです。 その際に流れなのですが、 1で記入してもらった名前をsubmitで送信し、その内容をphpファイルに送る その後そのファイル内で、name,createdとしてmysqlに値を格納する。nameは名前、createdはボタンが押された時の時間を格納 これで登録はできるかと思いますがどうでしょうか? php初心者のため、まずは流れから質問させてもらいました。 phpの内容ですが、 dbに接続する selectでテーブルを選択する insertで指定したテーブルにPOSTで受け取った値を格納する dbを切断する このような流れでよろしいでしょうか? 管理者側日付ごとに検索するプログラムを書くときはその際にまた質問させていただこうと考えております。 また名前などのデータはPOSTメソッドでの受け渡しで良いのでしょうか?

    • 締切済み
    • PHP
  • 携帯メールについてです。

    携帯メールについてです。 携帯はau W55T です。 受信したメールが、一斉送信されたメールかどうかわからなくて困っています。 toまたはccで送信されたメールでも、私が受け取ると、送信者の名前しか表示されません。 他の受信者が、一斉送信で返信したメールを受信して、さっきのメールは一斉送信されたものだったのか。と気がつきます。 うまく説明できず恐縮ですが、どのような設定をすればよいのか教えてください。よろしくお願いします。

    • ベストアンサー
    • au
  • PHPとMySQLを使ったフォームを作っていますが、うまくできないこと

    PHPとMySQLを使ったフォームを作っていますが、うまくできないことがあり書き込みさせていただきます。 わかる方、ご助力願えれば幸いです。 フォームから、送信されたデータを受け取って、MySQLに登録する際に、フォーム内に空欄があると、うまくMySQLのデータベースに追加ができなかったり、変更ができなかったりします。 コードを簡単に書くと… <?php //フォームからデータを取得 $name = $_POST['name']; $address = $_POST['address']; $age = $_POST['age']; //データベース接続処理 $db = mysql_connect("localhost","user","password"); mysql_select_db("db_name",$db); $rs = mysql_query("select * from tablename order by my_id desc",$db); //データベースへの登録 $rs = mysql_query("INSERT INTO tablename(name,address,age)VALUES('$name','$address','$age')",$db); ?> このような感じになります。 フォームには、名前、住所、年齢を入力しているわけですが、年齢が必須でないため、空欄として送られてくることもあります。 年齢に数値が入っている場合は、うまく登録されますが、空欄であった場合、特にエラーが出るわけでもなく、単に「登録されない」という状況がおきます。 データベースのテーブルのフィールドでは、ageは int(11)でNULLはYes、defaultはNULLになっております。 自分なりに調べてみたつもりですが、知りたい情報に出合うことができませんでした。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPの定期実行[ Linux&cron ]

    Redhat9.0 PHP4.3.3を利用しています。 cronとコマンドライン版のPHPを利用して「1分毎に自分にメールを送る(実験用)」プログラムを実行させたいのですが、コマンドラインでは実行可能なのに、cronに登録してもメールが送られてきません。cronにはプログラムを実行したログが残っています。 完全に行き詰ってしまった。よろしくお願いします。 [ crontab ] * * * * * php /home/hoge/mail.php [ mail.php ] mb_language("Ja"); mb_internal_encoding("SJIS") ; $subject="test"; $content = "test"; $mailfrom="From:hoge@hoge.jp"; $mailto="***@hoge.com"; mb_send_mail($mailto,$subject,$content,$mailfrom);

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

    今日携帯のメアドを変えたので友達には一斉送信しようかと思うんですけど、一斉送信した場合その子の名前とか出ませんですよね?? 私の友達に1人iPhoneなのですがその友達が一斉送信した時にメアドとそのメアドの人の名前まで書かれていました。 私はガラケーなんですけど、ガラケーで一斉送信してもメアドは見られるけど名前まではで出ませんよね?