• ベストアンサー

携帯からの空メールでの自動登録するcgi

【種別】携帯からの空メールで自動登録できる(サーバー内のcsvファイルに追加する)cgi 【条件】後からメールサーバにとりに行くタイプではなく、     受信と同時に追加できること。 【言語】PHP、Perlのいずれか Google探しても、フリーのものは見つかりません。 よろしくお願いします。

  • CGI
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

結局はメールがメールサーバに届いたことをきっかけにプログラムが動作しなければいけないので、CGIだけの技術では不可能です。 CGIが起動された後、CGI側でPOP接続を行い、必要な情報を処理しましょう。 以下サンプル。(文字が多いので一部だけ) 詳しくはRFCのメールに関するところを調べてください。 use Socket; # Socket モジュールを使う use MIME::Base64; # プロトコルは POP3 を使う $port = getservbyname('pop3', 'tcp') || 110; # ホスト名を、IPアドレスの構造体に変換 $iaddr = inet_aton($connect_host) || &error("$connect_hostは存在しないホストです。\n",''); # port と IP アドレスをまとめて構造体に変換 $sock_addr = pack_sockaddr_in($port, $iaddr); # ソケット生成 socket(SOCKET, PF_INET, SOCK_STREAM, 0) || &error("ソ\ケットを生成できません。\n",''); connect(SOCKET, $sock_addr) || &error("$connect_host のポート $port に接続できません。\n",''); # ファイルハンドルSOCKETをバッファリングしない select(SOCKET); $|=1; select(STDOUT); # POP3サーバにユーザ名とパスワードを送る print SOCKET "USER $username\r\n"; print SOCKET "PASS $passwd\r\n"; $buf = <SOCKET>; # メールの一覧を取得 print SOCKET "LIST\r\n"; while (<SOCKET>){ # 「.」のみの行が送られてきたらループを抜ける m/^\.\r\n$/ && last; # 「メール番号 バイト数」という行なら if ( m/^(\d+) (\d+)\r\n$/ ){ $num=$1; $size=$2; # メール番号を @mails に push push(@mails, $num); } } # 各メールについて foreach ( @mails ){ # メールの内容を送信するようリクエストを送る print SOCKET "RETR $_\r\n"; print SOCKET "DELE $_\r\n"; while (<SOCKET>){ # 「.」のみの行が送られてきたらメールの終り。 m/^\.\r\n$/ && last; # ここでメール取得 } } # サーバとの接続を切る print SOCKET "QUIT\r\n"; close(SOCKET);

miracle2006
質問者

補足

細かなソースまで提供していただき本当に感謝しております。 その後、調べましたら、 .foward を利用すれば、メールを受信したら、 特定のCGIを起動できるようですが、 記述の仕方がよくわかりりません。 もちろん、.foward 使用を許可するという前提です。

その他の回答 (2)

noname#25358
noname#25358
回答No.2

 PHPの方は分かりません。  Perl であれば、メールを受信する拡張モジュールをインストールするか、もしくは自前で生成する必要があります。  自前の場合、自分でソケットを開いてPOPサーバーと通信します。  参考資料は、ソケットの開き方については "Perl ソケット" で検索できたと思います。  POPサーバーとの話し方については、プロトコル仕様書を探してみてください。

noname#25358
noname#25358
回答No.1

 電子メールの受信と同時に走るようなプログラムは、CGIでは作れません。  そのようなプログラムの動作をプロバイダが許しているのであれば、もしかしたら技術情報が公開されているかもしれません。サポートに問い合わせてみてください。  もしサーバーが自前であれば、お使いのメールサーバーのドキュメントを参照してください。  メールの受信と同時にイベントを起こすことが可能であれば、その旨の記載があるはずです。

miracle2006
質問者

補足

早速のご回答ありがとうございます。 では、後日、メールサーバからメール情報(ヘッダー情報-メールアドレスと送信者)を取得し、CSVファィルに追加するようなCGIを紹介しいてるサイトをご紹介していただけると助かります。 また、perl,phpのブログラムソースを提供していただけると幸いです。

関連するQ&A

  • 空メールを送るとまぐまぐに登録できるCGIは?

    特定の業種向けのメルマガをまぐまぐを通じて発行しています。 時々、ダイレクトメールを送ってメルマガ購読者を募集しています。 メルマガ登録するためにわざわざサイトまで来ないといけないので、できるだけカンタンにしたいと思っています。 携帯だとよく空メールを送るだけでメルマガにお店の発行しているメルマガに登録できるシステムがあります。 空メールを送ってもらうと自動的にまぐまぐに登録されるcgiというのはないのでしょうか? 現在はさくらのレンタルサーバーを使っているので空メール受信用に特定のアドレスを作ることは可能です。PHPもPERLもつかえます。 cronという機能も使えます。

    • ベストアンサー
    • CGI
  • cgiの空ファイル?の作り方を教えて下さい

    よろしくお願いいたします。 現在あるフリーのソフトを使用しようと思い、設定していたのですが、そのなかで -------------------------------------------------- 「config.php」で指定した名前の空のファイルをdataディレクトリに作成する。   例:「maillog.cgi」「sign.cgi」「deny.cgi」 ---------------------------------------------------- ↑↑ と上記のような説明があったのですが、どのようにして作ればいいのでしょうか? phpとかの空ファイルなら作ることができるのと思うのですが、cgiには全然詳しくないので質問させていただきました。 すいませんが、何とどよろしくお願いいたします

    • 締切済み
    • CGI
  • 自動返信について

    メルマガのような空メールを送ると自動登録&自動返信できるようなフリーのCGIプログラムってないでしょうか?空メールシステムと言う形で有料で提供しているのはあるのですが、どうしても見つかりません。 あれはCGIで作られていくのですか?ASP、PHPなどですか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • なぜ CGI は Perl 言語で作成/動く環境が多いのか。

    最近 CGI に興味をもちここで質問しながらネット検索をしました。 すると Perl 言語での CGI サンプルが一番多く C 言語で作る CGI の サンプルが少し見つかりました。 私の使っている無料サーバーでも CGI は使えますが Perl 言語だけ有効です。 セキュリティの問題で SSI と組み合わせた C 言語の CGI は実行出来ないようです。 質問内容: (1)なぜ CGI は Perl 言語が一番多いのか?→PHP、Cもあるのに (2)なぜ無料サーバーの多くが Perl 言語しか使えないのか? (3)処理の重い CGI を使うとサーバーがダウンするので使わないようにと  私の使っている無料サーバー(infoseek)でなっています。どの程度の  処理のことでしょうか? 上記の3つまたは1つでもアドバイスをして欲しいです。 回答をお待ちしています。

    • ベストアンサー
    • CGI
  • PHPをcgiとして使う方法がもしあったら教えて下さい!

    PHPをサーバーサイド言語でなくて、 一行目に #!/usr/bin/php などと書いて、 Perlと同じようにcgiとしてブラウザから使える方法 がもしあったら教えて下さい!

    • ベストアンサー
    • 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 となります。 ご教示のほどよろしくお願いします。 

  • 空メールを送信してもらい、メールアドレスが入った状態のフォームのurl

    空メールを送信してもらい、メールアドレスが入った状態のフォームのurlを自動返信メールで送る物を考えています。 空メールを受信し、返信本文にフォームのurlが入ったメールを自動返信します。 (ここまでは解決済み) ↓ 例えば、「http://xxx.com/form.cgi?email=xxx@yyy.com」のようなurlへ飛べば、フォームに既にメールアドレスが入っているような状態にしたいのです。 このような事が出来るcgiやphpでフリーのものをご存知であれば教えて頂けると助かります。 有料でも構いませんが、出来れば独自ドメインで運用したいので、レンタル系の物以外でご存知であれば、どうぞ宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • 空メールを送信するフォームCGI

    空メールを受信してアドレス登録をするメルマガシステムを利用しています。 そのシステムにアドレスを登録するためのフォームを作成したいのですが、フリーのCGIで適当なものが無いでしょうか。 フォームにアドレスを入力し送信ボタンをクリックすると、 そのアドレスを送信者として本文なしの空メールが送信される物です。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • c言語とperlのcgi設定方法

    (Arch linuxにてlighttpdサーバを立ち上げています) cgiは一般にperlが多いとは思いますが、C言語からのcgiも試みています perlによるcgiを有効にするにはlighttpd.confの設定に以下を追加  server.modules += ( "mod_cgi" )  cgi.assign = ( ".cgi" => "/usr/bin/perl")  static-file.exclude-extensions = ( ".cgi" ) C言語から作成したcgiを有効にするにはlighttpd.confの設定に以下を追加  server.modules += ( "mod_cgi" )  cgi.assign = ( ".cgi" => "")  static-file.exclude-extensions = ( ".cgi" ) 同一のサーバ下で「"/usr/bin/perl"」「""」ともにを有効にする設定方法はありますでしょうか よろしくお願いいたします

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

    携帯サイトで空メールを送信して、自動返信メールに書かれた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

専門家に質問してみよう