Как опустить символы кодирования вложений электронной почты imap, вставленных в базу данных mysql - PullRequest
1 голос
/ 27 марта 2019

После анализа электронной почты imap я вставляю его в свою базу данных.Письма, которые не имеют вложений, вставляются без проблем, но письма с вложениями являются проблемой.Когда я вставляю, мой столбец тела в моей таблице заполнен сумасшедшими закодированными символами.Как можно расшифровать или остановить вставку вложений электронной почты в базу данных с помощью этих сумасшедших персонажей.Вот примеры примеров:% PDF-1.7% ���� 1 0 obj en.Ссылайтесь на мой код ниже и помогите пожалуйста.Спасибо.

 <?php

    $inbox = imap_open($hostname,$username,$password);

    $emails = imap_search($inbox,'ALL');
    $totalemails = imap_num_msg($inbox);
      if($totalemails){
        echo $totalemails;
      }else{
          echo 'There are no emails.';
          }
          echo "<br><hr><br>";

    if($emails) {

        rsort($emails);

        foreach($emails as $email_number) {
            $overview = imap_fetch_overview($inbox,$email_number,0);
            $structure = imap_fetchstructure($inbox, $email_number);

            if(isset($structure->parts) && is_array($structure->parts) && isset($structure->parts[1])) {
                $part = $structure->parts[1];
                $body = imap_fetchbody($inbox,$email_number,2);

              if($part->encoding == 3) {
                    $message = imap_base64($body);
                } else if($part->encoding == 1) {
                    $message = imap_qprint(imap_8bit($body));
                  } else if($part->encoding == 0) {
                    $message = $body;
                     } else if($part->encoding == 2) {
                    $message = imap_binary($body);
                    } else if($part->encoding == 4) {
                    $message = imap_qprint($body);
                } else {
                    $message = $body;
                }

            $status =($overview[0]->seen ? 'read' : 'unread');
            $from = utf8_decode(imap_utf8($overview[0]->from));
            $date = utf8_decode(imap_utf8($overview[0]->date));
            $subject = utf8_decode(imap_utf8($overview[0]->subject));
        }
        echo "status: " . $status . "<br>";
        echo "subject: " . $subject . "<br>";
        echo "from: " . $from . "<br>";
        echo "date: " . $date . "<br>";
        echo "body: " . $message . "<br><hr><br>";

        //my insert into database code is here.

          imap_delete($inbox, $email_number);
        }
      }  

    // close the connection

    imap_close($inbox);
    ?>
...