• 締切済み

空メールシステムを作りたい

こんにちは よく携帯サイトで空メールシステムを見かけます 私も会員制の掲示板を作っていますが アドレスを打ち間違えて 登録する人がたくさんいます。 そこで 空メールを送信してもらいメールが届いたら .forwordでphpへ送り 定型文の後ろに取得したアドレス例)"http://xxxx/touroku.php?M=R&S=1?メールアドレス" をつけて返信できるようなのを考えています。  わかりづらい質問で恐縮ですが どなかた力を貸してください。

  • PHP
  • 回答数5
  • ありがとう数3

みんなの回答

  • syuuiwsd
  • ベストアンサー率56% (17/30)
回答No.5

"| exec hoge.php"のようにすれば? 自分もLinuxでやってみましたが、"| hoge.php"はできなかったです。C言語でSTDINからの入力を./test.txtに保存する「mailsave」プログラムを作って "| ./mailsave" 使ってみてもだめだったですけど "| exec ./mailsave" のようにできました。

aya_106
質問者

お礼

何とか空メール送信できるようになったけど携帯から送信してもメールが帰ってこないのはなぜなのでしょう?

aya_106
質問者

補足

ごめんなさい  意味がわかりません

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

そうですか・・・何か設定があったような気もしますが すぐにでてこないのでとりあえず メールがトリガーにならないのであれば、メールボックスにためておいて imap系の関数でメールを読み取る設定をして、cronで定期的に 処理をすることになるでしょう。 http://www.php.net/manual/ja/ref.imap.php

aya_106
質問者

補足

.forwordにこうやって記述したら "|cat > /home/hvn/test.txt" test.txt にちゃんと書き込まれていました。 メールがトリガーになっているのは確認できました でも "|/home/hvn/hoge.php"にするとダメみたいです hoge.phpの記述の問題でしょうか?

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

とりあえずコツコツやってください。 まずは、 .forwardに "|cat > test.txt" として、メールがトリガーになるかどうか確認するあたりから・・・。 そのあとは自分のホームディレクトリにhoge.shをおいて "|hoge.sh" として #!/bin/sh echo "test" > "test.txt" など、メールがスクリプトが動くことを確認します。 あとはphpのスクリプトが動くかどうか確認するなど、とにかく やってみてみるしかないです

aya_106
質問者

お礼

.forwordに "| /usr/local/bin/php /home/アカウント/hoge.php" hoge.phpで #!/usr/local/bin/php <?php // main { $stdin = fopen("php://stdin", "r"); if (!$stdin) { exit(); } $email = ""; while ($line = fgets($stdin)) { $line = trim($line); // メールヘッダ部が終了したらループ終了 if (!$line || $email){ break; } // 送信元メールアドレスの取得 if (eregi("^from:", $line)){ $email = getEmail($line); } } // メールアドレスが取得できなければ終了。(getEmailに問題アリ) if (!$email){ exit(); } autoMail($email); } function autoMail($email) { // ここで空メールを送信元に対して送信します。 // 送信プログラムは省略します。 mail("$email", "登録はココから", "ここから登録して下さい\nhttp://url;"); } function getEmail($line) { if (eregi("(.*)\<(.*)\>", $line, $tmp)){ $from = $tmp[2]; } return strtolower(trim($from)); } ?> で何とか空メール送信ができるようになりました。 でもパソコンから空メールを打つとOKなのですが携帯から空メールを打ってもメールが送られてこないです なぜでしょうか?? 初心者の私でもここまでがんばれたのは皆さんのおかげです^^

aya_106
質問者

補足

.forwardに "|cat > test.txt" として、メールがトリガーになるかどうか確認するあたりから・・・。 試してみました どうもメールがトリガーにならないみたいです。 初心者の私に いろいろアドバイスありがとう 感謝しています

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

.forwardと同じフォルダ上に、自分でつくってください。 そのhoge.phpに #!/usr/local/php/bin/php -f <?PHP $data=fopen("php://stdin", "r"); print $data; ?> と書いて保存してください。 もちろん今回はスクリプトで動かすので、hoge.phpに実行属性が必要です。 この質問内容を解決するにはおそらく新たにたくさんのことを覚える 必要があるので、自分である程度しらべようという向上心がないなら 手を出さないほうがよいと思いますよ。 http://www.google.co.jp/search?q=.forward+%E8%87%AA%E5%8B%95%E8%BF%94%E4%BF%A1+php&ie=UTF-8

aya_106
質問者

補足

いろんなところを見て自分なりに調べていますが どうしてもできません やっぱり初心者には無理なのでしょうか・・ hoge.phpに #!/usr/local/bin/php -q <?php // main { $stdin = fopen("php://stdin", "r"); if (!$stdin) { exit(); } $email = ""; while ($line = fgets($stdin)) { $line = trim($line); // メールヘッダ部が終了したらループ終了 if (!$line || $email){ break; } // 送信元メールアドレスの取得 if (eregi("^from:", $line)){ $email = getEmail($line); } } // メールアドレスが取得できなければ終了。(getEmailに問題アリ) if (!$email){ exit(); } autoMail($email); } function autoMail($email) { // ここで空メールを送信元に対して送信します。 // 送信プログラムは省略します。 } function getEmail($line) { if (eregi("(.*)\<(.*)\>", $line, $tmp)){ $from = $tmp[2]; } return strtolower(trim($from)); } ?> と書いてもCommand died with status 127: "hoge.php". Command output: sh: line 1: hoge.php: command not found になります

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

.forwardやalisasでプログラムに流します。 たとえば.forwardなら "| hoge.php" とするれば渡せます。 プログラム側では標準入力を以下のようにとります #!/usr/local/php/bin/php -f <?PHP $data=fopen("php://stdin", "r"); ?>

aya_106
質問者

補足

hoge.php って何処にあるんですか? Command died with status 127: "hoge.php". Command output: sh: line 1: hoge.php: command not found 空メール送信したら こんなのがでました

関連するQ&A

  • 空メールから自動返信するスクリプトについて

    携帯サイトで空メールを送信して、自動返信メールに書かれたURLから会員登録させるスクリプトを作成しようとしています。 空メールから自動返信については、.forword等の説明があるサイトを参考にして、なんとかできそうかな?と考えていますが、送信するメールアドレスごとに、自動返信する文章を変更したいのです。 例:aaa@test.com 宛 ⇒ 自動返信文章 : regist.php?u=aaa   bbb@test.com 宛 ⇒ 自動返信文章 : regist.php?u=bbb この場合、メールアドレスを増やす度に、毎回メールアカウントを追加して、設定を追加しなくてはいけないのでしょうか? そうではなく、PHPでの管理画面で、ccc@test.comやddd@test.comのメールアドレスをDBなどに追加して、そのメールアドレスに送られてきたら自動返信メールが送信され、送信される文章も変更したいのです。 ご存知の方がおられたら教えていただければ幸いです。

    • 締切済み
    • PHP
  • 空メール受信後の自動返信メールの方法

    空メール受信後の自動返信メールの方法 現在、メルマガの登録のシステムを作っています。 簡単な流れとしては  1.ユーザー様が登録/削除のため、PCまたは携帯より空メールの送信を行う  2.受信したメールよりアドレスを抜き出して、DBへ登録/削除を行う  3.ユーザー様に対して、登録/削除が完了したメールを送信する となります。 で、質問させていただきたい内容は  1.の空メールを受信してから2.の処理を行うために、メールの内容をPHPで書いた処理プログラム(auto_rep.php)へ渡そうとしているのですが、 その渡し方(設定の方法?)が分かりません。 いろいろ調べた結果、.forwordを使用すればいいみたいなことまでは理解できたのですが、   メールサーバーからWebサーバーへどうやって引き渡すのか?   .forwordをどこに設置すればいいのか?   .forwordの記載内容をどのように書けばいいのか?   (いろいろな書き方が書かれていましたので・・・・) ここで、行き詰ってしまってます。 申し訳ございませんが、ご教示のほどお願いします。 また、まだWeb系のソフトを組み始めて間もない状況ですので、初心者にも分かるようにご教示いただければと思っています。 なお、環境は以下の通りです  サーバー:Plesk 8.2.1  OS   :Linux 2.6.9 となります。 ご教示のほどよろしくお願いします。 

  • 空メールシステムを作りたいのですが・・・

    携帯電話からabcde@*.co.jpというアドレスに空メールを送信します。 そのメールアドレスにメールが届いた瞬間PHPを動かし PHPでそのメールアドレスにあったURLをメールにつけて自動送信したいんですが、実現方法がよくわかりません。 サーバOSはwindows server2003 standard editionを使っています。 調べていたらqmailを使って出来るみたいですがよくわからないのでわかる方お願いします。

    • ベストアンサー
    • PHP
  • 空メールの自動返信

    携帯から空メールを送信したら自動返信で会員登録用URLを 送信したいのですが、会員登録用URLに 携帯のメールアドレス(空メールを送信)を追加したいのですが どうすればよいのかがわかりません。 どのようなスクリプト?でできるのか教えてください。

    • 締切済み
    • PHP
  • 自動返信メールの設定方法

    こんにちは。 空メールを送ったときに自動的にURLなどを返信してくれる方法がわからなくて困っています。 Linuxサーバでの.forword設定も考えましたが調べたところ、メールサーバにメーリングリストなどが存在する場合、永久ループでメーリングリスト内のアドレスに何度も送信されてしまう可能性があることが書かれていて、.forword以外の方法がないか調べています。 .forwordについても知っている方がいれば教えていただきたいと思います。 よろしくお願いします。

  • 空メールを送信するとアドレスを載せたメールを返すシステムを

    私はホームページを運営しています。 そこでケータイ用サイトも作ろうと思いましたが、アドレスが長いのでよくチラシとかに載っている、 ×××@××.comに空メールを送信すればアドレスの載ったメールが即返信されてくるようなシステムにしたいのですが、 これはCGIなどで出来るのでしょうか? 教えてください。

  • 空メール送信~メールアドレス取得

    最近、携帯電話やパソコンで空メールを使用したシステムが流行っておりますが、勉強がてら私も空メールを使用した簡単なプログラムを作成しようと考えております。 1.フォームにボタンを1つ設け、そのボタンを押下すると予め指定されている送信先に空メールを送信する。 2.送信されたメールのアドレス(受信したアドレス)を取得する。 3.取得したメールアドレスを主キーとし、DBを構築する・・・ 先日、mb_send_mail()を使用してメール送信に成功したのですが、メール送信後、php.iniのsendmail_fromで設定したアドレスが送信者として固定に表示されておりました。 携帯電話等での送信者ごとのメールアドレスを取得したいのですが、送信する際に送信者のメールアドレスを保持し、送信後に送信者として送信者メールアドレスを表示させるにはどうすればよろしいでしょうか。又、そのメールアドレスを取得してDBの主キーとしたいのですが、どのようにすることで容易に行えるのでしょうか。 大変分かりにくい文章で申し訳ございません。 根本的な知識がまだ不十分ですので、詳しく教えて頂けると非常に嬉しいです。 大変お手数をお掛け致しますが、よろしくお願い致します。           

    • ベストアンサー
    • PHP
  • 空メールシステムについて

    よくメールマガジンサイト(携帯版)で見かけるのですが、空メールを送信して登録、解除できるサイトがあります。このような仕組みを是非CGIで実現してみたいとおもっていますがこのようなものはCGIで実現可能なのでしょうか?今回は、メールが飛んできたらログファイルにそのメールアドレスを書き込むと言うものだけでかんがえています。 もしできるとするならは、 1.空メールが送られてくるたびにCGIを起動させる方法 2.空メールのヘッダーを読み込みそれを送信元アドレス取得する方法 この2点が質問ないようです。またこれ以外にも他の方法はありますか? ちなみに僕のサーバー環境はrimネットのホスティングサービスを利用していいます。 1の質問でどうやら.forwardのなかに"|exec /home/user/script"を記述して #!/usr/local/bin/perl  while (<STDIN>){処理} とすれば/home/user/scriptはメールを送られてくるたび実行されるらしいのですがうまくいきませんでした。 この山はどうしても越えたいのでどなたかご教授よろしくおねがいします。

  • 【携帯サイト】空メールの機能について・・・qmail/php

    携帯サイトでよく見かける 空メールを送信して自動で登録して返信してくれる機能を作りたいのですが、どうすればいいのかわかりません。。。 qmailでメールを受信した時に自動でphpを実行するようなことはできるのでしょうか? メールアドレスを保存するため「eregi("From: ・・・」で取得しようと思っているのですが。。。 おすすめの方法がございましたらよろしくお願い致します。

    • 締切済み
    • PHP
  • qmailでパイプ処理。空メール自動返信がうまくいきません・・・

    qmailでパイプ処理。空メール自動返信がうまくいきません・・・ PHP4.xxです。 初心者です。 携帯から空メールを送ってサーバーサイドでパイプ処理して自動返信を行いたいのですが うまくいきません。 サーバーはlinux系 自作サーバーで qmailです。 ネットで色々調べてSSHでサーバに入り、メールアカウントの.qmailの中に 実行するPHPのスクリプトのフルパスを記載。 viで内容を確認すると ------------------------------------------------------------ | /home/httpd/vhosts/domain.com/httpdocs/mail/touroku.php | true ./Maildir/ ------------------------------------------------------------ と3行記載されています。 これでいけますよね・・・? で実行ファイル(touroku.php)の中身はテストとして ------------------------------------------------------------ #!/usr/bin/php -q <?php $to = "送信したいメールアドレス"; $from = "とりあえず送信者アドレス"; $title = "WEBテスト"; $naiyou = "テスト内容"; base64_encode(mb_send_mail($to, $title, $naiyou, "From:$from")); exit(99); ?> ------------------------------------------------------------ 上記のファイルはそのままブラウザで実行すると確かにメールが来ました。 正常に作動しています。 またこのファイルtouroku.phpは属性は755にしてあります。 冒頭の#!/usr/bin/php -q はどこかのサイトで書かれていたのでつけてみました。 はずしても結果は同じです。 また最後の「 -q」はあっても無くても同じ結果でした。 最後のexit(99);はこちらのサイトに書かれてたのでつけて見ました。 http://www.asahi-net.or.jp/~aa4t-nngk/qmail4.html#filterbuild PHPのファイルは正常に作動している・・・となると qmailのパイプ処理がうまくいっていないということですよね・・・? 上記の以外の箇所で何か設定等を変更しないといけないのでしょうか? それとも、パイプとして処理できるphp実行ファイルを置くフォルダが決まっているのでしょうか? 経験者の方お知恵を拝借できましたら幸いです!!

専門家に質問してみよう