2008-08-28 2 views
1

を受信するたびにキックする方法が必要です電子メールを読んで、いくつかの重要な情報を取り出し、それをデータベースに書き込むPHPスクリプトを開始することができます。</p> <p>私は、ユーザーが送信するとき、それはとてもそれを設定したいのですが... PHPスクリプトの特定のアカウントは、電子メールの小さなサイドプロジェクトのWebアプリケーションで作業

これを行うにはどうすればよいですか?新しい電子メールをチェックするcronジョブ?

このアプリはMediaTempleの「専用仮想サーバー」上で動作しているので、私は妥当なレベルのコントロールを持っていると思うので、さまざまなオプションがあります。

私は非常にゆっくりとロープ(PHP、MySQL、サーバの設定/管理)を学んでいますので、あなたの助言と洞察力は非常に高く評価されています。

乾杯、

答えて

0

マットStuehler cronジョブは、このようなタスクに共通の解決策です。 Checking for new Mails with PHPは問題ありません。 qmail-serverを実行している場合(おそらく他のサーバーもこれを行うことができます)、あなたはPHPスクリプトを起動するすべての "受信メール"にfire a scriptを入れることができます。

1

.forwardsまたは同様の設定可能な配信オプション(qmail、postfix、およびsendmailがすべて)を許可するように設定できるメール転送エージェントを管理している場合、私はあなたの.forwardでスクリプトを設定します。 procmailrc、または他の同様のプログラム可能な配信メカニズムを使用することができます。これを行うときには、メールに重大な入力確認をする必要があります(送信者があなたが誰であるかを確かめ、受信した行が一致し、データが正常であることを確認してください)あなたのシステムに迷惑をかける。

また、悪意のあるデータからのSQLインジェクションを避けるためにphpが使用する入力欄を使用することもできます。我々はすべての小さなボビーテーブルのレッスン時に反映させることができます。

xkcd.com/327/

0

あなたは.forwardファイルを使用することができます。

ジャストパイプ記号の後、ファイルにPHPスクリプトのフルパスを置く:

|/full/path/to/script.php 
4

Procmailのは、私はそれを行う方法です。ここでは、電子メール内のテキストを実際に処理して、MySQLデータベースにアーカイブする例を示します。

:0: 
* ^(From).*[email protected] 
{ 
    :0 c 
    | php /var/www/app/process_email.php 

} 
1

私は最近、この必要性があるプロジェクトに取り組んでいました。メールアカウントのホームディレクトリで.forwardファイルを使用して大成功を収めました。たとえば、アドレス[email protected]に対してこれを実行しようとしており、使用しているサーバがbar.comのメールサーバであるとします。まず、このアカウントの.forwardファイルを作成する必要があります。私が働いていたサーバーでは、これは次のようになります。

を「| /パス/:次のようにそのファイルの

内容だった

/home/email/[email protected]/.forward to/script.php "

また、フォワードファイルの所有者は[email protected]で、chmodが600になりました(オーナーのみに読み書きします)。)

次に、メールをパイプしているスクリプト(上記の/path/to/script.php)を設定する必要があります。 まず、そのスクリプトを実行可能(+ x)​​にする必要があります。残りの部分は単にSTDINを読み込んで処理します。ここでは、メッセージ全体を読み取って変数$ emailに格納するサンプルスクリプトを示します。

#!/usr/local/bin/php 
<?php 
$fd = fopen("php://stdin","r"); 
$email = ''; 
while($feof($fd)){ 
    $email .= fread($fd, 1024); 
} 
fclose($fd); 
?> 

うまくいけば、それはあなたのお手伝いだったと思います。

関連する問題