[PHP-users 4423] Re: メール機能との連動でデータベース更新
Youichi Iwakiri
php-users@php.gr.jp
Sat, 22 Dec 2001 23:16:25 +0900
いわきりです
Takeo Shibata wrote in <003901c18ae6$50746100$0e94fea9@home>:
>4.メールを受信した段階でメールの送信元と確認番号を読んで
>PostgreSQLの仮登録のレコードをアップデートする
>しくみをつくりたいのですが
>この4のとこでなやんでます
sendmail, qmail等のSMTPサーバは受信したメールを各ユーザの
メールスプールに追加するだけでは無く、指定によっては
プログラムに渡す仕組みを持っています。
特定アカウントに来るメールを全て何らかのプログラムに渡したければ
/etc/aliasesにエントリを追加します。
#メーリングリストの作成/運用を行ったことがあれば解るでしょうけども
例 ml-name-ctl@hoge.ne.jp宛の場合
ml-name-ctl: "| /home/hoge/regist.php"
また、通常のメールと制御用のメールが同一のメールアドレスに来る場合は
.forward等で制御できます。
私はsendmail+MHでメーリングリストから送られてくるメールをDBに登録する
処理をPHPで書いてます。
$HOME/.forwardに
"| /usr/local/lib/mh/slocal -user iwakiri"
$HOME/.maildeliberyに
X-Sequence pgsql-jp A "| /home/iwakiri/ml_maint/regist.php pgsql"
List-Id PHP-users A "| /home/iwakiri/ml_maint/regist.php php_users"
として特定のヘッダ情報を持つものだけ処理対象としています。
>ある資料で
>imap_header関数その配列のあたいをとってくれば
>メールアドレスはとれそうですが
>管理画面からとらなくてはいけません
>これを受信したと同時にできないでしょうか
>もちろんサーバーの受信アドレスはとういつしてですが
>メール到着とともに
>メール送信もと、メール本文を確認して
>処理するプログラムPHPを動かす
>(このイベントをメール受信と同時に発生させたいのですが)
>できなければ5分おきににうごかす。
>メールをあけて、送信元メールアドレスを確認、本文確認
>あってればDB更新、そしてメール削除)
>このPHP機能を数分間隔で繰り返し実行(この機能でなやんでます)
まぁ、IMAP,POP3関数はメールボックスに既に有るものを読みに
行く場合に有効なものですが、メールの受信を契機にPHPスクリプトを
動かす処理には向いていないと思います。
私が愛用しているものですが、pearの配下に
pear/mail/MimeDecode.php
が有ります。ファイルまたは標準入力から受け取るデータをメールと
みなし、ヘッダ、ボディーパートの分割だけでなく名前の通りMIMEに
対応しています。
これを使えばお望みの機能を実現できるとおもいますよ。
>マニュアルには記述されてなかったです)
pear関係は英文もほとんど無いですからねぇ (^^;