Вы сказали:
Как максимально расширить на все случаи жизни ? Для любых писем
<?
require_once '../vendor/autoload.php';
use PhpMimeMailParser\Parser;
$eml_file = __DIR__ . '/attachments\2025\07\08\12b30715c8ccae21e2b05c2fe7faee6e/1751972486.eml';
$eml_file = __DIR__ . '/attachments/2025/07/08/9df0df4d80701d9302f892956da27d6d/1751963059.eml';
function parse_eml_full($emlFile) {
$parser = new Parser();
$parser->setPath($emlFile);
// Заголовки
echo "<h2>Заголовки</h2><table border='1' cellpadding='5'>";
foreach ($parser->getHeaders() as $header => $value) {
if (is_array($value)) $value = implode(", ", $value);
echo "<tr><td><strong>" . htmlspecialchars($header) . "</strong></td><td>" . htmlspecialchars($value) . "</td></tr>";
}
echo "</table>";
// От кого / Кому / Тема
echo "<h3>Отправитель: " . htmlspecialchars($parser->getHeader('from')) . "</h3>";
echo "<h3>Получатель: " . htmlspecialchars($parser->getHeader('to')) . "</h3>";
echo "<h3>Тема: " . htmlspecialchars($parser->getHeader('subject')) . "</h3>";
// Тело письма
echo "<h2>Тело письма (plain text)</h2>";
echo "<pre>" . htmlspecialchars($parser->getMessageBody('text')) . "</pre>";
echo "<h2>Тело письма (HTML)</h2>";
echo "<div style='border:1px solid #ccc;padding:10px;margin:10px 0;'>" . $parser->getMessageBody('html') . "</div>";
// Вложения
$attachments = $parser->getAttachments();
echo "<h2>Вложения</h2>";
if (empty($attachments)) {
echo "<p>Нет вложений</p>";
} else {
foreach ($attachments as $attachment) {
$name = $attachment->getFilename();
$size = strlen($attachment->getContent());
$savedPath = "attachments/uploads/" . $name;
file_put_contents($savedPath, $attachment->getContent());
echo "<p>Файл: <strong>$name</strong> ($size байт) — <a href='$savedPath' target='_blank'>Скачать</a></p>";
}
}
}
parse_eml_full($eml_file);