• 締切済み

空メールシステムについて

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

みんなの回答

  • h-kiku
  • ベストアンサー率50% (22/44)
回答No.3

こんな風に記述すれば良いのでは. ただし、From: が複数行になっている場合は考慮していません --> #!/usr/local/bin/perl # 多分、フルパスで書いたほうが安全だと思います. $mail = "/..../data/mail.log"; #ここらへんにメールアドレスのヘッターを読み込み送信元メールアドレスを #取得する記述?? # メール本体 @text = <STDIN>; $line="junk"; while ((@text) && ($line ne "")) { $line = shift(@text); chomp($line); if ($line =~ /^From: /) { ($tmp, $from) = split(":", $line, 2); } } if(!open(OUT,">>$mail")) {print 'ファイルへの書込みができませんでした。',"\n"; exit;} print OUT "取得したメールアドレス,$from\n"; close(OUT); exit; <-- $from に From: の右側の情報が入ります. メールアドレス以外の情報(名前など)がある場合は、 そこからメールアドレスのみを抽出する必要がありますね.

全文を見る
すると、全ての回答が全文表示されます。
  • u1p
  • ベストアンサー率33% (19/56)
回答No.2

~/.forward の該当部分と、 それで起動されるスクリプトを見せていただかないと 何ともいえないのですが、該当の処理は可能ですよ。 /etc/aliases などでやるのが私は好きですが、 ホスティングサービスじゃぁしょうがないですね。 あ、~/.forward やスクリプトのパーミッションはOKですよね。 あと、~/ 自体も。 perlのパスなんかは大丈夫でしょうか。 とりあえずそっちは、単体でテストできますよね。 それはどうでしたか?

katupon
質問者

補足

早速のお返事有難うございます。 まず/.forwardのパーミッションは644にしています。 ~/は755です。 perlのパスは/usr/local/bin/perlで確認OKです。 起動させるスクリプトは、 【mail.cgi】 --------------------------------------- #!/usr/local/bin/perl $mail = "./data/mail.log"; print "Content-type:text/html\n\n"; #ここらへんにメールアドレスのヘッターを読み込み送信元メールアドレスを #取得する記述?? if(!open(OUT,">>$mail")) {print 'ファイルへの書込みができませんでした。',"\n"; exit;} print OUT "取得したメールアドレス,¥n"; close(IN); exit ------------------------------------------------------------------ こんな感じなんですが、~/.forward に関係する記述と、送られてきたメール 内容のヘッターからメールアドレスを取得する方法がわかりません。 とりあえずcgiのパーミッションは705でmail.logは606です。

全文を見る
すると、全ての回答が全文表示されます。
  • akino4
  • ベストアンサー率18% (35/185)
回答No.1

えっと、それはCGIじゃなくて単なるスクリプトのような .forwardはsendmail系の設定です。 あなたが書いてる設定だと メールが送られてくるとパイプを開いて/home/user/scriptていう プログラムにメールのデータを流し込むって感じになってます。 メールのフォーマットについては・・・覚えてないっす検索してみてくだささい(^^;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

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

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

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

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

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

    • 締切済み
    • PHP
  • 携帯サイト空メール処理プログラム(PHP)について

    PHPでできた携帯サイトの空メール処理のプログラムのカスタマイズをしています。 空メールが送られてきたらkaramail.phpが起動し、送信者のメールアドレスを取得して、メッセージの自動送信をするところまでできているのですが、それにメールタイトル(Subject)の取得も付け加えようとしています。 メールアドレスの取得と同様の方法でできるとは思うのですが、文字コード別の処理などもあるので、複雑になると推測しています。 ネットなどで調べると「空メール処理プログラムは様々な場合を想定しなければならないので大変複雑で手間がかかる」とのことです。 携帯機種による違い、送信元のメーラーによる違い、その他いろいろあるのだと思うのですが、あくまでも推測で「これとこれに関する処理が必要」といった具体的な情報が見つからずに困っています。 サンプルプログラムにしても、メールアドレスを取得するものはネットや書籍に出ているのですが、タイトルを取得するものは出てきません。 普段はPCサイトの開発を行っているので、携帯事情がよくわからず、調べても出てくる情報がとても少ないです。 おそらく実務で開発した経験がある人だけが知っていることなのだと思います。 携帯空メールでタイトルを取得する場合、どのような処理が必要なのか。詳しい方、実務で開発している方がいらしたら教えて下さい。 送信されてきたメールのヘッダーを調べる環境は作ってあります。 サーバーはさくらインターネット、karamail.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); } } // メールアドレス取得関数 function getEmail($line) { if (eregi("(.*)\<(.*)\>", $line, $tmp)){ $from = $tmp[2]; } return strtolower(trim($from)); } -------------------------------------

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

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

    • 締切済み
    • PHP
  • 空メールを送信するフォームCGI

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

    • ベストアンサー
    • CGI
  • 空メールで登録

    携帯から空メールを送信して、あらかじめアドレスを登録した人の名前がページに表示できて、名前が表示された人がメールをもう一度送るとページから名前が削除されるようにできるcgiってありますか?宜しくお願い致します。

    • ベストアンサー
    • CGI
  • 空メ会員入退会システム

    初めまして、下記内容のシステムを作りたいのですが教えてください。 空メールでユーザーからのメールを受け取りメールアドレスを抜き出してMySQLに登録、MySQL上にデータがある場合はメーリングリストとして活用可能なプログラムのソースが必要で困ってます。 1.同一のアドレスに空メールを送って入会も退会も出来る。 (空メールすると入会、もう1回同じアドレスに空メールすると脱退) 2.登録してる人へ向けてメールを配信出来る。 PHPのバージョンは5.0?最新の物を使ってます。 私の為にそのまま使えそうなスクリプトを貼り付けてくれる優しい方 御願いします;;

    • 締切済み
    • PHP
  • 空メール処理について

    仮にentry@hoge.com宛へ空メールを送ると送信元アドレスをテキストファイルに書き込みたいのですが、どのようにしたらいいのでしょうか? MATがqmailで.qmailにてcgiなどに渡す方法はいくらか調べたのですが、今回はレンタルサーバで行いたいのでサーバの設定を変更することなくcgiファイルだけで行うことができるのでしょうか? ちなみに下記URLをみるとMATの設定をするようなことが見当たらなかったので可能なのかなぁと思っているのですがどうなのでしょうか? http://souppot.jp/article212.php よろしくお願いします。

    • ベストアンサー
    • Perl
  • 空メール

    hotmailを使ってとあるファンが配信しているメルマガに登録しています。 ある日ライブのレポを書いたというアドレスが書いてあり、そこに空メールを送ると折り返しレポが書いてあるメールが届く、というものなのですが、 空メールを送ってもメールが返ってきません。 調べてみたところ、いきなり大量に空メールを送信すると一時的に送信しなくなる、という事が分かったのですが、 他のフリーメールで試してみたところ、他のフリーメールでは問題なく空メールが届きました。でもhotmailだけが届きません。 これはどうしてなのでしょうか??

このQ&Aのポイント
  • EPSON PX-S06を使用している際に純正インクを交換したところ、認識できないエラーメッセージが表示されました。この問題に対応する方法について教えてください。
  • EPSON PX-S06のインクカートリッジ交換後に「認識できません」というエラーメッセージが表示されてしまいます。この問題の解決策についてご教示いただけますか?
  • EPSON PX-S06のインクを純正品に交換した際、認識できないエラーメッセージが表示されました。この問題を解決する方法を教えてください。
回答を見る

専門家に質問してみよう