PHP code example of php-mime-mail-parser / php-mime-mail-parser

1. Go to this page and download the library: Download php-mime-mail-parser/php-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/ */

    

php-mime-mail-parser / php-mime-mail-parser example snippets




$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"));

$rawHeaderTo = $parser->getHeader('to');
// return "test" <[email protected]>, "test2" <[email protected]>

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

$rawHeaderFrom = $parser->getHeader('from');
// return "test" <[email protected]>

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

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

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

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

$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


$parser->saveAttachments('/path/to/save/attachments/');
// return all attachments saved in the directory (rectory (exclude inline attachments)

// Save all attachments with the strategy ATTACHMENT_DUPLICATE_SUFFIX (default)
$parser->saveAttachments('/path/to/save/attachments/', false, Parser::ATTACHMENT_DUPLICATE_SUFFIX);
// return all attachments saved in the directory: logo.jpg, logo_1.jpg, ..., logo_100.jpg, YY34UFHBJ.jpg

// Save all attachments with the strategy ATTACHMENT_RANDOM_FILENAME
$parser->saveAttachments('/path/to/save/attachments/', false, Parser::ATTACHMENT_RANDOM_FILENAME);
// return all attachments saved in the directory: YY34UFHBJ.jpg and F98DBZ9FZF.jpg

// Save all attachments with the strategy ATTACHMENT_DUPLICATE_THROW
$parser->saveAttachments('/path/to/save/attachments/', false, Parser::ATTACHMENT_DUPLICATE_THROW);
// return an exception when there is attachments duplicate.


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

foreach ($attachments as $attachment) {
    echo 'Filename : '.$attachment->getFilename().'<br>';
    // return logo.jpg
    
    echo 'Filesize : '.filesize($attach_dir.$attachment->getFilename()).'<br>';
    // return 1000
    
    echo 'Filetype : '.$attachment->getContentType().'<br>';
    // return image/jpeg
    
    echo 'MIME part string : '.$attachment->getMimePartStr().'<br>';
    // return the whole MIME part of the attachment
    
    $stream = $attachment->getStream();
    // get the stream of the attachment file

    $attachment->save('/path/to/save/myattachment/', Parser::ATTACHMENT_DUPLICATE_SUFFIX);
    // return the path and the filename saved (same strategy available than saveAttachments)
}

sudo apt install php-cli php-mailparse

brew install php
pecl install mailparse

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

git clone https://github.com/php/pecl-mail-mailparse.git
cd pecl-mail-mailparse
phpize
./configure
sed -i 's/#if\s!HAVE_MBSTRING/#ifndef MBFL_MBFILTER_H/' ./mailparse.c
make
sudo mv modules/mailparse.so /usr/lib/php/AAAAMMDD/
echo "extension=mailparse.so" | sudo tee /etc/php/7.1/mods-available/mailparse.ini
sudo phpenmod mailparse

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