我的 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
这显然不能正常工作,我不知道为什么。一方面,From 标头在这一个上通过,但在另一个上没有通过,这似乎是断断续续的。
此外,目录 (/home/sy) 要么被截断,要么被某些东西切断以导致错误。
我根本不熟悉 Zend 或 procmail。我很高兴能走到这一步,只是想稍微解析一下电子邮件,这样我就可以获取电子邮件的正文并将其放在某个地方。有人说服我,这将是比仅使用 IMAP 或其他东西更好的方法,我听了。如果有人有任何出色的解决方案或替代方案,我会全力以赴。多谢你们!