コンピューター・インターネット
 
オープン伝言板My伝言板 ログイン  新規登録
 
トップ > ネット関連さんの伝言板 > PHP講座 > phpで空メールサービス

最近の投稿
phpで空メールサービス
  11/16 15:07    
サーバ環境変数
  11/15 19:27    
mb_convert_kana
  11/14 15:04    
session registerの使い方
  11/11 19:58    
PEAR:XML_RSS
  11/10 16:47    
PEAR:HTTP_Request
  11/09 20:00    
PEARモジュールのインストール方法
  11/08 15:32    
Oracleモジュール組み込みPHPのインストール
  11/07 14:34    
mb_send_mail
  11/02 19:16    
ereg
  10/31 17:43    

ネット関連さんの伝言板
インターネット関連のお話
PHP講座

関連伝言
ジャンル:コンピューター・インターネット
エリア:東京都恵比寿

「phpで空メールサービス」
携帯から直接アクセス!!
phpで空メールサービスのQRコード

トラックバック(3631)
トラックバックリストを表示しない

 ネット関連さんの伝言板
PHP講座  
仲間に知らせる
PHPに関する伝言板です。 今までの開発経験などを書いていきます。

phpで空メールサービス

2005/11/16 15:07
QRコードの登場でちょっと廃れた感がありますが、ユーザのメールアドレスを正確にかつ簡単に取得する方法としてカラメールサービスがあります。
このプログラムはとても簡単なものなのでご紹介します。
例として
abc@test.jp
を空メールアドレスとします。

通常メールアカウントには、受信したメール内容をOSのパイプ機能でプログラムに入力することができます。
MTAがsendmailであれば、/etc/aliasesに

abc:    |"/home/mail/test.php"

qmqilであれば、"/var/qmail/alias/.qmail-abc"に

|"/home/mail/test.php"

と書きます。

こうすると、abc@test.jpで受信したメール内容がtest.phpに渡ることになります。
test.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));
}
?>
この伝言のトラックバック先URL : http://conv.jp/trackback/369/6n3R5IHj6m5qcd1j
返信する
前の伝言    
返信メッセージ  返信数:2
  テスト方法 New!
From: ネット関連 06/02/24 21:00
空メールの要点は
1.メールエイリアスの設定
2.phpコマンドプログラムの実行
の2点です。

以下テスト方法です

1について
phpプログラムの先頭に
error_log("test");
exit();

を追加し、サーバーのメールログを確認します

空メール受信後、ログに"test"と出ていればOKです

2について

まず上記のエラー関数を使いFROMのメアドが取れているか確認してみて下さい
  ご教授お願いします<(_ _)> New!
From: takabak 06/02/22 18:38
今、
こちらに書かれているサンプルソースを
使用させていただき、自動返信の作成を
しているのですが、どうもうまく動いてくれません。

何か良い方法はありませんでしょうか?
宜しくお願い致します。

利用規約便利な使い方問い合わせ会社概要プライバシーポリシー

Copyright (C) 2010 Cprod Inc. All Rights Reserved.