0

procmail を使用して PHP スクリプトに電子メールを送信しようとしています。スクリプトは MySQL データベースをチェックし、送信者の電子メールに基づいて件名を編集します。これを行うための機能するprocmailがあると思います:

:0:
* ^To:.*@barrett.com
! '/usr/local/bin/php-5.2 -f $HOME/ticket/emailcustcheck.php'

ただし、procmail がコマンドをどのように実行するかは正確にはわかりません。電子メールはどのように PHP スクリプトに渡されるのでしょうか? また、スクリプト内でどのように参照すればよいでしょうか?

4

2 に答える 2

0

スクリプトへのパイプの正しい構文は次のとおりです。

:0   # no lock file
* ^To:.*@barrett\.com
| /usr/local/bin/php-5.2 -f $HOME/ticket/emailcustcheck.php  # no quotes, use pipe

アクションは!電子メール アドレスに転送しようとしますが、もちろん、PHP インタープリターへのパスを含む長い引用符で囲まれた文字列は、有効な電子メール アドレスではありません。

ロックが必要な場合 (つまり、この PHP スクリプトの 2 つのインスタンスを同時に実行できない場合)、ロック ファイルに名前を付ける必要があります。Procmail はここでロック ファイル名を推測できません。そのため、ロック アクションはとにかくエラー メッセージを生成するだけです。よくわからない場合は、名前付きロック ファイルを追加する方が安全ですが、同時実行性の問題 (他のプロセスがデータベースを使用していないときにスクリプトがデータベースに書き込む必要があるなど) がない場合は、必要ありません。 、処理が遅くなる可能性があります。

Cc条件の正規表現もやや不正確に見えますが、直接だけでなくメールでもトリガーしたいかもしれないと推測することしかできませんTo:^TO_その場合は、ドキュメントでマクロを調べてください。

スクリプトはメッセージを標準入力として取得します。おそらくすべての入力行を配列に読み込むか、2 つの配列に分割して、最初の空の行より前のすべてが「ヘッダー」配列に入り、残りが「本体」配列に入るようにする必要があります。または、PHP には、電子メール メッセージを標準入力からオブジェクトに読み込むことができるクラスがいくつかあるかもしれません。

于 2012-12-10T09:26:45.110 に答える