imap — проблемы с 8-битными письмами типа MIME в переполнении стека

Хорошо, я пытаюсь в 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 & Клиника ИТ & Поддержка T

Заголовок: 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 & Клиника ИТ & Ответ поддержки T: NHG & Клиника ИТ & T ID сообщения поддержки: <8611c203ec1ee6173e753fe4ae3b72c0@corporate.nhg-uk.com> X-Mailer: PHPMailer 5.2.22 (https://github.com/PHPMailer/PHPMailer) X-Mailer: Awesome Support / 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 + cvcALIL N + 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: 3ed646545a31a61c350ff360f5f4604f360f660f360f5603 c154a5acbc7065 X-antispameurope-Mailarchiv: электронная почта, архивированная www.antispameurope.com для: = it.support@nh-group.co.uk X-antispameurope-Mailarchivtype: входящий X-antispameurope-Virusscan: CLEAN X-antispamerpe : Это письмо было законсервировано 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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …