Вы сказали:
Есть обработчик файлов *.eml писем Есть некоторые письма которые не читаются
И когда открываю файл При открытие некоторые письма *.eml выводит сообщения
Содержимое письма
--_008_GV1P192MB1809C3BC8A81FD075500EC15F24EAGV1P192MB1809EURP_
Content-Type: multipart/alternative;
boundary="_000_GV1P192MB1809C3BC8A81FD075500EC15F24EAGV1P192MB1809EURP_"
--_000_GV1P192MB1809C3BC8A81FD075500EC15F24EAGV1P192MB1809EURP_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
0JLQvtC+0LHRidC1INC90LUg0YPQsdC10LTQuNC70Lgg0L/RgNC40LvQvtC20LXQvdC90YvQtSDR
hNCw0LnQu9GLDQoNCg0KQW5kcmV5IEt1c3Rvdg0KUHJvY3VyZW1lbnQgU3BlY2lhbGlzdA0KKzcg
NDk0MiA0MSA1MSAxNA0KKzcgOTE1IDkxNyAyMiAyNw0KQW5kcmV5Lkt1c3RvdkByZXNpbHV4LmNv
bQ0Kd3d3LnJlc2lsdXguY29tDQrQoNC10LfQuNC70Y7QutGBLdCS0L7Qu9Cz0LAgfCDRg9C7LiDQ
сам файл обработчик
<?php
function decode_header_line($text) {
return mb_decode_mimeheader($text);
}
function parse_eml_html($emlPath) {
$raw = file_get_contents($emlPath);
if (!$raw) {
echo "<p>Ошибка чтения файла</p>";
return;
}
list($rawHeaders, $rawBody) = explode("\r\n\r\n", $raw, 2) + ["", ""];
// Заголовки
$headers = [];
foreach (explode("\r\n", $rawHeaders) as $line) {
if (preg_match('/^([\w\-]+):\s*(.*)/', $line, $matches)) {
$headers[$matches[1]] = decode_header_line($matches[2]);
}
}
// Заголовки (с описанием)
echo "<h3>Заголовки письма</h3><table border='1' cellpadding='5'>";
foreach ($headers as $key => $val) {
echo "<tr><td><strong>$key</strong></td><td>$val</td></tr>";
}
echo "</table>";
// Поиск boundary
$boundary = '';
if (isset($headers['Content-Type']) && preg_match('/boundary="?(.*?)"?$/', $headers['Content-Type'], $b)) {
$boundary = $b[1];
}
echo "<h3>Содержимое письма</h3>";
if ($boundary) {
$parts = explode('--' . $boundary, $rawBody);
foreach ($parts as $part) {
if (trim($part) == '' || $part == "--") continue;
list($partHeadersRaw, $partBody) = explode("\r\n\r\n", $part, 2) + ["", ""];
$contentType = 'text/plain';
$disposition = '';
foreach (explode("\r\n", $partHeadersRaw) as $line) {
if (stripos($line, 'Content-Type:') === 0)
$contentType = trim(substr($line, 13));
if (stripos($line, 'Content-Disposition:') === 0)
$disposition = trim(substr($line, 21));
}
if (stripos($disposition, 'attachment') !== false) {
if (preg_match('/filename="?(.*?)"?$/', $disposition, $f)) {
$filename = $f[1];
$data = base64_decode(trim($partBody));
$size = strlen($data);
echo "<p><strong>Вложение:</strong> $filename ($size байт)</p>";
// file_put_contents("attachments/$filename", $data);
}
} else {
echo "<h4>Часть ($contentType)</h4>";
echo "<pre>" . htmlspecialchars(trim($partBody)) . "</pre>";
}
}
} else {
echo "<pre>" . htmlspecialchars($rawBody) . "</pre>";
}
}