Проблемы с 8-битными письмами типа MIME в php

Хорошо, я пытаюсь в php использовать команды imap для чтения электронных писем из почтового ящика, а затем что-то с ними делать (неважно, что). Я получаю отправляющего хоста, тему и отправителя, а затем тело письма. Если электронное письмо имеет тип MIME "quoted-printable for Text/Html", тогда я могу прочитать его, используя imap_qprint($text). Тем не менее, если MIME типа "8bit для Text / Html", я пытаюсь использовать imap_8bit($text) и по-прежнему получить мусор.

Это код

<?php
$codes = array("7bit","8bit","binary","base64","quoted-printable","other");
$stt = array("Text","Multipart","Message","Application","Audio","Image","Video","Other");



# Connect to the mail server and grab headers from the mailbox

$mail = imap_open('{remote.nh-group.co.uk:110/pop3}', 'itsupport', 'xxxx');
$headers = imap_headers($mail);

?>
<html>
<head>
<title>Reading a Mailbox including multipart emails from within 
PHP</title>
</head>
  <body>
  <?
$pictures = 0;
$html = "";
# loop through each email

for ($n=1; $n<=count($headers); $n++) {
$header = imap_header($mail, $n);

  $st = imap_fetchstructure($mail, $n);
    $multi = $st->parts;
    $nparts = count($multi);
    if ($nparts == 0) {
            $html2 .=  "* SINGLE part email<br>";
    } else{
            $html2 .=  "* MULTI part email<br>";
    }

# look at the main part of the email, and subparts if they're present

    for ($p=0; $p<=$nparts; $p++) {
            $text =imap_fetchbody($mail,$n,$p);

            if ($p ==  0) {
                    $it = $stt[$st->type];
                    $is = ucfirst(strtolower($st->subtype));
                    $ie = $codes[$st->encoding];
            } else {
                    $it = $stt[$multi[$p-1]->type];
                    $is = ucfirst(strtolower($multi[$p-1]->subtype));
                    $ie = $codes[$multi[$p-1]->encoding];
            }

# Report on the mimetype

            $mimetype = "$it/$is";
            $mimeshow .=  "<br /><b>Part $p ... ";
            $mimeshow .=  "Encoding: $ie for $mimetype</b><br />";

# decode content if it's encoded (more types to add later!)
         if ($ie == "8bit") {
                   $body = imap_8bit($text);
                    }
            if ($ie == "base64") {
                    $body = imap_base64($text);
                    }
            if ($ie == "quoted-printable") {
                    $body = imap_qprint($text);
                    }


# If it's a .jpg image, save it (more types to add later)

            if ($mimetype == "Image/Jpeg") {
                    $picture++;
                    $fho = fopen("imx/mp$picture.jpg","w");
                    fputs($fho,$realdata);
                    fclose($fho);
                    # And put the image in the report, limited in size
                    $html2 .= "<img src=/demo/imx/mp$picture.jpg width=150><br />";
            }
# Add the start of the text to the message
            $shorttext = substr($text,0,8000);
            if (strlen($text) > 8000) $shorttext .= " ...\n";
            $html2.=  nl2br(htmlspecialchars($shorttext))."<br>";

    }
echo $mimeshow.'<br>';  
$subject=$header->subject;
echo '<br>Subject: '.$subject.'<br>';
echo '<br>Sender: '.$header->senderaddress.'<br>';

$splitheader = get_object_vars($header);

$host=$splitheader[from][0]->host;
echo '<br>Header: '.$host.'<br>';
echo $body.'<br>';   


}
?>
</body>
</html>   

У меня есть два письма в почтовом ящике. Первый кодируется как однокомпонентный 8-битный, а второй - как многочастный с цитируемой для печати

Результаты приведены ниже


Часть 0... Кодировка: 8 бит для текста / HTML

Тема: Это тест для контента билета Билет № 5916 (№ 5916#)

Отправитель: NHG & Clinicare IT & T Support

Заголовок: nh-group.co.uk

MIME-версия: 1.0 Получено: от hsmx05.antispameurope.com (83.246.65.101) от remote.nh-group.co.uk (192.168.1.19) с идентификатором Microsoft SMTP-сервер (TLS) 14.3.123.3; Ср, 1 ноября 2017 19:03:01 +0000 Получено: от delivery.mailspamprotection.com (184.154.208.35) от mx-gate68-hz2.hornetsecurity.com; Ср, 01 ноя. 2017 20:03:01 +0100 Получено: от ns1.ukm17.siteground.biz ([77.104.173.217] helo=3Dukm17.siteground.biz)=09 по se6.mailspamprotection.com с esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256)=09(Exim 4.89)=09(конверт из)=09id 1e9yHu-0004pY-L8=09 для it.support@nh-group.co.uk; Ср, 01 ноября 2017 г. 14:02:57 -0500 Получено: от [127.0.0.1] (порт =3D57646 helo=3Dukm17.siteground.biz)=09 от ukm17.siteground.biz с smtp (Exim 4.89_3-0adfb60-XX)=09(конверт из)=09id 1e9yHt-0003cX-9r=09 для it.support@nh-group.co.uk; Ср, 01 ноя. 2017 19:02:53 +0000 Кому: Тема: Это тест на содержание заявки Билет #5916 (#5916#) X-PHP-Originating-Script: 1028:class-phpmailer.php Дата: ср., 1 ноября 2017 г. 19:02:53 +0000 От: NHG & Clinicare IT & T Support Ответ на вопрос: NHG & Clinicare IT & T Support ID сообщения: <8611c203ec1ee6173e753fe4ae3b72c0@corporate.nhg-uk.com> X-Mailer: PHPMailer 5.2.22 ( https://github.com/PHPMailer/PHPMailer) X-Mailer: отличная поддержка /4.3.2 Content-Type: text/html; charset=3D"utf-8" Content-Transfer-Encoding: 8bit X-AntiAbuse: Этот заголовок был добавлен для отслеживания злоупотреблений, пожалуйста, включите его в отчет о злоупотреблении X-AntiAbuse: Основное имя хоста - ukm17.siteground.biz X-AntiAbuse: оригинальный домен - nh-group.co.uk X-AntiAbuse: UID/GID инициатора / вызывающего абонента - [47 12] / [47 12] X-AntiAbuse: адресный домен отправителя - ukm17.siteground.biz X-Get-Message-Sender-Via: ukm17.siteground.biz: нет X-Originating-IP: 77.104.173.217 X-SpamExperts-Domain: ukm17.siteground.biz X-SpamExperts-Username: 77.104.173.217 Результаты проверки подлинности: mailspamprotection.com; auth=3Dpass smtp.auth=3D77.= 104.173.217@ukm17.siteground.biz X-SpamExperts-Outgoing-Class: ham X-SpamExperts-Outgoing-Evidence: Combined (0.09) X-Recommended-Action: принять X-фильтр -ID: EX5BVjFpneJeBchSMxfU5sGO2s1tBb9jz5hUPxV9beEXv9krsgRhBn0ayn6qsU= c7BhTjUfSYCP0C 5wUMIAUTyTj+Ouslq06/9+FJoQ8Ic94JRiSFlfpo3YNCL6gbYMZBRNZBKQKXP9KnqRgOefBfIV= 9l 2lYoidX0QKN0Rp6WDa9d16bf9psWBhnIw8QWTHqFnHl2TRtBFGxCwNLr/WIXTmbEBG2scSEjB4= Сс a3THUkvgvpnunQOsgZPpnjjHtFttCMKZw1tYrnr7rJHHUpEAaqg2HAG29ucnwP0M3OWpRjoXRu= Wz sGtazoE/vPfv1xaxhZcKP/NtHQBPU7HC7F6FoNMf/xm4p5WihZYpa+IEJ/oLosXQp02uZERM5C= В.Д. wD65x9537/7rZ2H1fP4wGxurimbdDoD390nzzgliUnnZRwVrO92GYpEzQCukKCDE/yxRejx+ZE= Н8 3D3uT7G9vVxSoPhN0btnfLiBKgWuU86DjRdgvyO/J5YD0SxG9XoKqN48Eo6Fw5tldaeQTD7oX0= Ib JnLsGIY0M3GhDMueGnYVlMD3E51XI8hjMr6/ д +SExB92w4mbOkVfblh5aYJR7+ZK4eH0+hutvA= HU mPi9Ge+4V1D7jZKXiOlXLdJnBjsNteQCLP3pDMhin+HwPDUna1dtsRiS8klEbdK8qT/SBsZL7w= 6z GAl0Dy9kR6GQ/UE9MSfeA9Gi3qOpaZFBK5mqSVIqVdOvR+fzwQc+c1DSL3/EWMOJs7x5Cx3mJJ= Ws y6OTbpWyPpCPz0F+cvcALILN+ Ogg/Nnx0s/oQjWWHy7qx4hhxCQ7BHN3temh9QhbVJQq9MPSrP= 7L а /OGl9nRw/ г +05rAIG9Wqbj6q4DLIKylFpcDvqmbspbAlPF70Oi5kWG5WrRZ6uKzfnujlezufX= KT FyKo6u83H3djlBrH/4eh02WHu233Y80OmAux3oN13+ztUznegQV1FFKCsIxMyfJ8+4W3u3gmpA= Nv 1DYnwFyGOs036orcJFgN1Xap1jpFsMB9RjtbAFxvtxLn+3ki2FSeoRDxSTwJWw42swm4bO6gac= пМ pzImK0dZ8eeB0y9de0/ НеХ /Z5iLUIRMUDzeIb3XIhs66JoTzHLoQrA7fQYs8PbcVGX4Rd96fmx= 9N Rd596h9beN4f2wGT8e5STWXPcr9VvNyyyTnK4eETwT5QBDJUDAGkO208F/IJRA8ZF8C5AnJBxS= FD JKA40LeuppcmthdVdcHKN13hYPpnTUitS3rpEbXqWxAzJMHFAVLVMimS1MiSrJJu X-отчет-о нарушениях -To: spam@quarantine1.mailspamprotection.com X-antispameurope-sender: tyxanhos@ukm17.siteground.biz X-antispameurope-получатель: it.support@nh-group.co.uk X-antispameurope-MSGID: 3ed646545a31a61c350ff360f4f4604f3 c154a5acbc7065 X-antispameurope-Mailarchiv: электронная почта, архивированная www.antispameurope.com для:= it.support@nh-group.co.uk X-antispameurope-Mailarchivtype: входящий X-antispameurope-Virusscan: CLEAN X-antispamerpe: Этот E-Mail был с законсервировано www.antispameurope.= com E-Mailservice на mx-gate68-hz2 с 03396F0021B X-antispameurope-date: 1509562979 X-antispameurope: ВХОД: X-antispameurope-Connect: delivery.mailspamprotection.com[184.154.208.35], = LS=3D1;EMIG=3D0 X-антиспамевроп-обнаруженная информационная почта: да X-антиспамевроп-WC: 10:602:1:10043:0:145:0:0:0:0:0:0:7:2:1:2:3:118:122:143=:0:1:0:0:0:99:0:0:0:4:0:0:0:0:0:0:1:0:0:0:0:1 X-antispameurope-Spamstatus: CLEAN X-antispameurope-REASON: Счет:-6.1 =09* 0.0 ТЕЛО HTML_MESSAGE: HTML включен в сообщение =09* 0.1 ТЕЛО MIME_HTML_ONLY: Сообщение содержит только текст / html части MIME =09* -4,3 BAYES_00 BODY: вероятность байесовского спама составляет от 0 до 1% =09* [счет: 0,0005] =09* -1,9 ASE_FP_2009_01 ASE 2009 негативный счет Возвращенный путь: tyxanhos@ukm17.siteground.biz X-MS-Exchange-Организация-AuthSource: NHS-EX01.nhs.local X-MS-Exchange-Organization-AuthAs: анонимный

Часть 0... Кодировка: 7 бит для Multipart/Alternative

Часть 1... Кодировка: 7 бит для текста / обычного

Часть 2... Кодировка: цитируемая для печати для текста / HTML

Тема: тест
Отправитель: Уилл Эванс
Заголовок: tyxan.com
тестовое задание
-
Уилл Эванс
m: + xxxxxxxx
w: веб-адрес


Как видите, второе тело $ email дает мне обычный форматированный текст, который я могу использовать. Первый, однако, дает мне... ну, кое-что!

Любые мысли с благодарностью.

0 ответов

Другие вопросы по тегам