1. Go to this page and download the library: Download erseco/mime-mail-parser library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
erseco / mime-mail-parser example snippets
use Erseco\MimeMailParser\Message;
use Erseco\MimeMailParser\MessagePart;
use Erseco\MimeMailParser\ParserOptions;
use Erseco\Message;
// Parse a message from a string
$rawEmail = file_get_contents('/path/to/email.eml');
$message = Message::fromString($rawEmail);
// Or parse from a file directly
$message = Message::fromFile('/path/to/email.eml');
// Or parse from any readable PHP stream
$stream = fopen('/path/to/email.eml', 'rb');
$message = Message::fromStream($stream);
// Optional safety limits (defaults keep ordinary mail working)
use Erseco\ParserOptions;
$options = new ParserOptions(
maxMessageBytes: 10_485_760, // 10 MiB raw message
maxParts: 1000, // leaf MIME parts
maxDepth: 20, // nested multipart depth
maxHeaders: 500, // headers per header block
maxHeaderLineLength: 998, // bytes per header line
maxDecodedPartBytes: 10_485_760
);
$message = Message::fromString($rawEmail, false, $options);
// Exceeding a limit throws Erseco\ParserLimitExceededException
// with getLimitName(), getLimitValue(), and getActualValue().
$message->getHeaders(); // get all headers as array
$message->getHeader('Content-Type'); // get specific header (raw unfolded value)
$message->getContentType(); // 'multipart/mixed; boundary="----=_Part_1_1234567890"'
$message->getFrom(); // 'Service <[email protected]>'
$message->getTo(); // 'John Doe <[email protected]>'
$message->getCc();
$message->getBcc();
$message->getMessageId(); // alias of getId()
$message->getSubject(); // raw subject (may still contain RFC 2047 encoded words)
$message->getDate(); // DateTime object when the email was sent
// RFC 2047: raw vs decoded headers
// getHeader() / getSubject() keep the raw unfolded value, including encoded-words.
// getDecodedHeader() and the convenience helpers decode B/Q encoded-words to text.
$message->getHeader('Subject'); // '=?UTF-8?B?UmV1bmnDs24gZGUgcHJveWVjdG8=?='
$message->getDecodedHeader('Subject'); // 'Reunión de proyecto'
$message->getDecodedSubject(); // same as getDecodedHeader('Subject')
$message->getDecodedFrom();
$message->getDecodedTo();
$message->getDecodedReplyTo();
$message->getDecodedCc();
$message->getDecodedBcc();
// Structured mailbox addresses
$message->getFromAddresses(); // list<Address>
$message->getToAddresses();
$message->getCcAddresses();
$message->getBccAddresses();
$message->getReplyToAddresses();
$message->getParts(); // Returns array of MessagePart objects
$message->getHtmlPart(); // Returns MessagePart with HTML content
$message->getTextPart(); // Returns MessagePart with Text content
$message->getAttachments(); // Returns array of attachment MessageParts
$message->getAttachedMessages(); // Returns parsed message/rfc822 attachments
// Working with message parts
$parts = $message->getParts();
$firstPart = $parts[0];
$firstPart->getHeaders(); // array of all headers for this part
$firstPart->getHeader('Content-Type'); // get specific header
$firstPart->getContentType(); // 'text/html; charset="utf-8"'
$firstPart->getMediaType(); // 'text/html'
$firstPart->getContentTypeParameters(); // ['charset' => 'utf-8']
$firstPart->getDisposition(); // 'attachment', 'inline', or null
$firstPart->getDispositionParameters(); // decoded RFC 2231 parameters
$firstPart->getContent(); // transfer-decoded content (no charset conversion)
$firstPart->getContentAsUtf8(); // text/* parts converted to UTF-8 when possible
$firstPart->getCharset(); // charset from Content-Type, or null
$firstPart->isHtml(); // true if it's an HTML part
$firstPart->isText(); // true if it's a text part
$firstPart->isAttachment(); // true if it's an attachment
$firstPart->isMessage(); // true for message/rfc822
$firstPart->getMessage(); // nested Message or null
$firstPart->getFilename(); // name of the file if attachment
// supports filename=, filename*=, and RFC 2231
// continuations (filename*0*=, filename*1*=, …)
$firstPart->getSize(); // size of content in bytes
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.