0

私はこれをいじってみましたが、データベースに入力するメッセージの正しい部分をプルすることができません。

部品番号1または部品番号2を使用すると、挿入することができますが、どちらも私が探しているものではありません。改行などを保持するためにhtmlをプルしたいと思います。

    $emails = imap_search($inbox,'ALL');
/* if emails are returned, cycle through each... */
if($emails) {
  foreach($emails as $email_number) {
        $overview = imap_fetch_overview($inbox,$email_number,0);
        $body = imap_fetchbody($inbox,$email_number,"1");
        $subject = $overview[0]->subject;
        createEvent($subject, $body, $email_number, $inbox);
  }
}

function createEvent($subject, $body, $msgNo, $inbox) { //process the body of the email and take it apart and find stuff in it...do whatever processing you need to here 
    $customer = ''; 
    $store    = ''; 
    $event    = ''; 
    $time = time();
    $status = '';

    // take the subject apart to get the individual elements 
    $split_subject = explode (":", $subject);

    $customer = trim($split_subject[1]);
    $store = trim($split_subject[3]);
    $event = trim(substr($split_subject[5], 0, 3));
    $status = substr($split_subject[5], 4);
    $priority = getPriority($event, $status);


    $amcs_db = mysqli_connect(AMCS_HOST, AMCS_USER, AMCS_PASS, AMCS_NAME) or die('Cannot connect to database');
    $message_body = mysqli_real_escape_string($amcs_db, $body);

    $sql = "INSERT into events values (0, '$customer', '$store', '$event', '$status', '$priority', '$time', '$body')";
    $result = mysqli_query($amcs_db, $sql) or die("Error writing to AMCS db");

    if ($result){ /*delete the email if the insertion was succesful*/
        //$delete = imap_delete($inbox, $msgNo);
        //imap_expunge($inbox);
    }
    mysqli_close($amcs_db);
}// end function 

部品番号1を使用すると、改行のないプレーンテキストが表示され、すべてが正しく表示され、正しくエンコードされます。2を使用すると、改行がありますが、「エラー:= A0 = A0 = A0 = A0 = A0 = A0 = A0 =サイン#1:エラーサインコントローラー」と表示されるスポットがいくつかあります。通常の電子メールでは、1行がエラーでフォーマットされ、次の行がインデントされます。したがって、そのインデントが電子メールにどのように挿入されているかについて、ある種の問題があるようです。

この問題を修正するにはどうすればよいですか?部品番号2.2または1.2を使用すると、DBブランクに入力されますが、それは私が望んでいることではありません、笑。

ありがとう!

4

1 に答える 1

0

別の部品番号を使用した場合の問題はまだ解決していませんが、解決策を見つけました。「1」を使用してデータベースに入れると、エコーアウトすると、nl2br() を使用すると改行が保持されます。それが誰かを助けることを願っています。

それでもうまくいかなかった理由を知りたいです。ありがとう!

于 2013-02-10T19:51:13.090 に答える