Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
P

php-mime-mail-parser

> 编程语言
Open source

A fully tested email parser for PHP 8.0+ (mailparse extension wrapper).

996 stars0 likes1 views
WebsiteGitHub

About

A fully tested email parser for PHP 8.0+ (mailparse extension wrapper).

Introduction

A fully tested email parser for PHP 8.2+ (mailparse extension wrapper).

It's the most effective PHP email parser around in terms of performance, foreign character encoding, attachment handling, and ease of use. Internet Message Format RFC 822, 2822, 5322.

Why?

This extension can be used to...

  • Parse and read email from Postfix
  • Read messages (Filename extension: .eml)
  • Create webmail
  • Store email information such a subject, HTML body, attachments, etc. into a database

Is it reliable?

Yes. All known issues have been reproduced, fixed and tested.

We use GitHub Actions, Codecov, Codacy to help ensure code quality. You can see real-time statistics below:

How do I install it?

The easiest way is via Composer.

To install the latest version of PHP MIME Mail Parser, run the command below:

composer require php-mime-mail-parser/php-mime-mail-parser

Requirements

The following versions of PHP are supported:

  • PHP 8.2
  • PHP 8.3
  • PHP 8.4
  • PHP 8.5

Previous Versions:

PHP Compatibility Version
HHVM php-mime-mail-parser 2.11.1
PHP 5.4 php-mime-mail-parser 2.11.1
PHP 5.5 php-mime-mail-parser 2.11.1
PHP 5.6 php-mime-mail-parser 3.0.4
PHP 7.0 php-mime-mail-parser 3.0.4
PHP 7.1 php-mime-mail-parser 5.0.5
PHP 7.2 php-mime-mail-parser 7.1.2
PHP 7.3 php-mime-mail-parser 7.1.2
PHP 7.4 php-mime-mail-parser 7.1.2
PHP 8.0 php-mime-mail-parser 9.0.1
PHP 8.1 php-mime-mail-parser 9.0.1

Make sure you have the mailparse extension (http://php.net/manual/en/book.mailparse.php) properly installed. The command line php -m | grep mailparse needs to return "mailparse".

Install mailparse extension

Debian, Ubuntu & derivatives

bash
sudo apt install php-cli php-mailparse

MacOS

bash
brew install php
pecl install mailparse

Other platforms

bash
sudo apt install php-cli php-pear php-dev
pecl install mailparse

From source

AAAAMMDD should be php-config --extension-dir

bash
git clone https://github.com/php/pecl-mail-mailparse.git
cd pecl-mail-mailparse
phpize
./configure
make
sudo mv modules/mailparse.so /usr/lib/php/AAAAMMDD/
echo "extension=mailparse.so" | sudo tee /etc/php//mods-available/mailparse.ini
sudo phpenmod mailparse

Windows

You need to download mailparse DLL from http://pecl.php.net/package/mailparse and add the line extension=php_mailparse.dll to php.ini accordingly.

How do I use it?

Loading an email

You can load an email in 4 differents ways:

php
require_once __DIR__.'/vendor/autoload.php';

$path = 'path/to/email.eml';
$parser = new PhpMimeMailParser\Parser();

// 1. Either specify a file path (string)
$parser->setPath($path); 

// 2. or specify the raw mime mail text (string)
$parser->setText(file_get_contents($path));

// 3. or specify a php file resource (stream)
$parser->setStream(fopen($path, "r"));

// 4. or specify a stream to work with a mail server (stream)
$parser->setStream(fopen("php://stdin", "r"));

Get the metadata of the message

Get the sender and the receiver:

php
$rawHeaderTo = $parser->getHeader('to');
// return "test" , "test2" 

$arrayHeaderTo = $parser->getAddresses('to');
// return [["display"=>"test", "address"=>"[email protected]", false]]

$rawHeaderFrom = $parser->getHeader('from');
// return "test" 

$arrayHeaderFrom = $parser->getAddresses('from');
// return [["display"=>"test", "address"=>"[email protected]", "is_group"=>false]]

Get the subject:

php
$subject = $parser->getHeader('subject');

Get other headers:

php
$stringHeaders = $parser->getHeadersRaw();
// return all headers as a string, no charset conversion

$arrayHeaders = $parser->getHeaders();
// return all headers as an array, with charset conversion

Get the body of the message

php
$text = $parser->getMessageBody('text');
// return the text version

$html = $parser->getMessageBody('html');
// return the html version

$htmlEmbedded = $parser->getMessageBody('htmlEmbedded');
// return the html version with the embedded contents like images

Get attachments

Save all attachments in a directory

…

Get all attachments

php
$attachments = $parser->getAttachments();
// return an array of all attachments (include inline attachments)

$attachments = $parser->getAttachments(false);
// return an array of all attachments (exclude inline attachments)

Loop through all attachments

…

Alternatives

If you're looking for alternatives to this library, here are a few options you might consider:

  • zbateson/mail-mime-parser: If you prefer not to use the mailparse extension, this library is a good alternative. However, parsing will likely be slower.
  • DirectoryTree/ImapEngine: If you need to parse emails available on an IMAP server, this library can meet your needs.
  • Mailcare: A service that acts as both an email receiving server and a parser, and can be connected with any code. It's a SaaS solution that can simplify incoming email management.

Postfix configuration to manage email from a mail server

To forward mails from Postfix to the PHP script above, add this line at the end of your /etc/postfix/master.cf (to specify myhook to send all emails to the script test.php):

myhook unix - n n - - pipe flags=F user=www-data argv=php -c /etc/php8/apache2/php.ini -f /var/www/test.php ${sender} ${size} ${recipient}

Edit this line (register myhook)

smtp      inet  n       -       -       -       -       smtpd -o content_filter=myhook:dummy

The PHP script must use the fourth method (see above) to work with this configuration.

Can I contribute?

Feel free to contribute!

bash
git clone https://github.com/php-mime-mail-parser/php-mime-mail-parser
cd php-mime-mail-parser
composer install
./vendor/bin/phpunit

If you report an issue, please provide the raw email that triggered it. This helps us reproduce the issue and fix it more quickly.

License

The php-mime-mail-parser/php-mime-mail-parser is open-sourced software licensed under the MIT license

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

PHPemailhacktoberfestmailmailparse-extension

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言