特定の電子メールアドレスが電子メールを受信したときに実行されるスクリプトがあり、procmail は PHP スクリプトにパイプし、それが Plancake によって解析されますが、多くの問題はありません。本文に特定のテキストが含まれているかどうかに応じて、strpos に if ステートメントがあります。何らかの理由で、MySQL コードを追加すると、すべてが機能しなくなります。残念ながら、そのセットアップ方法では、エラーチェックを追加する方法がよくわかりません。コードは次のとおりです。
<?php
require_once("PlancakeEmailParser.php");
$rawEmail = '';
if (($fp = fopen('php://stdin', 'r')) !== false) {
while (!feof($fp)) {
$rawEmail .= fread($fp, 1024);
}
fclose($fp);
}
$emailParser = new PlancakeEmailParser($rawEmail);
$emailSubject = $emailParser->getSubject();
$emailBody = $emailParser->getPlainBody();
$emailHeader = $emailParser->getHeader('From');
$message = "FROM: ".$emailHeader."\n\nSubject: ".$emailSubject."\n\nBody: ".$emailBody;
$status = 4;
preg_match("/\d+/", "$emailSubject", $matches);
$number = $matches[0];
$short = substr($message, 0, strpos( $message, 'Begin'));
if (stripos($short,'approve') !== false) {
echo 'true';
$msg = approve;
//file_put_contents('/home/symantec_mail/task' . $number . 'short.php',$msg);
file_put_contents('/home/symantec_mail/task' . $number . 'approve_short_reply.txt',$message);
file_put_contents('/home/symantec_mail/task' . $number . 'approve_reply.txt',$rawEmail);
}
if (stripos($short,'complete') !== false) {
echo 'true';
$msg = complete;
次の mysqli コードのコメントを外すと、すべてが停止します。
//$mysqli = new mysqli("localhost", "user", "pass", "db");
//$update = $mysqli->prepare("UPDATE task_overview SET status = ? WHERE task_id = ?");
//$update->bind_param('ii', $status, $number");
//$update->execute();
コードの残りの部分。
//file_put_contents('/home/symantec_mail/task' . $number . 'short.php',$msg);
file_put_contents('/home/symantec_mail/' . $number . 'complete_short_reply.txt',$message);
file_put_contents('/home/symantec_mail/' . $number . 'complete_reply.txt',$rawEmail);
}
?>
これらのコマンドを実行できない理由が本当にわかりません。通常の Web サーバーとは異なるシェル アカウント上にあることを指摘しておきますが、PHP はまだ実行されていますが、MySQL サーバーと通信しているかどうかはよくわかりません。エラーチェック用であっても、何か提案があればお願いします。よろしくお願いします。