0

当某个电子邮件地址收到电子邮件时,我有一个脚本运行,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 服务器位于不同的 shell 帐户上,尽管 PHP 仍在执行,但我真的不确定我是否正在与 MySQL 服务器通信。如果您有任何建议,即使是用于错误检查,我也会非常感激。

4

0 回答 0