私は procmail のセットアップがうまく機能していて、メールを受信したときに PHP スクリプトを問題なく実行しているようです。
.procmailrc ファイルの例を次に示します。
#BEGIN PROCMAIL SCRIPT FOR MAIL PARSING
DEFAULT=$HOME/Maildir/
MAILDIR=$HOME/Maildir
PMDIR=$HOME/.procmail
LOGFILE=$PMDIR/log.`date +%y-%m-%d`
SHELL=/bin/sh
:0
|`/usr/local/php53/bin/php /home/usrmail/email/script.php`
以下のログ出力:
From x13542053@homiemail-mx22.g.dreamhost.com Mon Feb 18 20:49:35 2013
Subject: TEST
Folder: HELLO 2559
/bin/sh: HELLO: No such file or directory
単純なecho "HELLO";
php スクリプトだけで、正常に動作するようです。
ただし、次のコードを使用して実際に電子メールを解析しようとすると、ログに以下のエラーが表示されます。
$rawEmail = '';
if (($fp = fopen('php://stdin', 'r')) !== false) {
while (!feof($fp)) {
$rawEmail .= fread($fp, 1024);
}
fclose($fp);
}
$email = new Zend_Mail_Message(array(
'raw' => $rawEmail
));
From actualaddress@gmail.com Mon Feb 18 20:44:36 2013
Subject: Re: Test
Folder: Fatal error: Class 'Zend_Mail_Message' not found in /home/sy 2747
/bin/sh: Fatal: No such file or directory
これは明らかに正しく機能していません。理由はわかりません。1 つは、From ヘッダーがこの 1 つで通過しましたが、もう 1 つは通過しませんでした。これは断続的なようです。
また、ディレクトリ (/home/sy) が切り詰められているか、何かが切り捨てられてエラーが発生しています。
Zend や procmail にはまったく詳しくありません。ここまでたどり着けてよかったです。メールを少し解析して、メールの本文を取得してどこかに配置できるようにしたいだけです。これは IMAP などを使用するよりも優れた方法であると誰かが確信し、私は耳を傾けました。誰かが素晴らしい解決策や代替手段を持っているなら、私はすべて耳にします. みんなありがとう!