GithubHelp home page GithubHelp logo

abilovelchin / php-mime-mail-parser Goto Github PK

View Code? Open in Web Editor NEW

This project forked from php-mime-mail-parser/php-mime-mail-parser

0.0 1.0 0.0 1.11 MB

Fully Tested Mailparse Extension Wrapper for PHP 5.4+

License: MIT License

PHP 100.00%

php-mime-mail-parser's Introduction

php-mime-mail-parser

A fully tested mailparse extension wrapper for PHP 5.4+

Latest Version Total Downloads Software License

Why?

This extension can be used to...

  • Parse and read email from Postfix
  • Create webmail
  • Store email information such a subject, HTML body, attachments, and etc. into a database

Is it reliable?

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

We use Travis CI to help ensure code quality. You can see real-time statistics below:

Build Status Coverage Quality Score

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 5.4
  • PHP 5.5
  • PHP 5.6
  • PHP 7
  • HHVM
sudo apt install php-cli php-pear php-dev php-mbstring

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

  • PHP version > 7.0: mailparse
  • PHP version < 7.0: mailparse 2.1.6

Follow this steps to install mailparse:

  • Compile in the temp folder the extension mailparse or mailparse-2.1.6 (workaround because pecl install doesn't work yet)
cd
pecl download mailparse
tar -xvf mailparse-3.0.2.tgz 
cd mailparse-3.0.2/
phpize
./configure
sed -i 's/#if\s!HAVE_MBSTRING/#ifndef MBFL_MBFILTER_H/' ./mailparse.c
make
sudo mv modules/mailparse.so /usr/lib/php/20160303/
  • Add the extension mailparse and activate it
echo "extension=mailparse.so" | sudo tee /etc/php/7.1/mods-available/mailparse.ini
sudo phpenmod mailparse

On 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?

<?php
// Include the library first
require_once __DIR__.'/vendor/autoload.php';

$path = 'path/to/mail.txt';
$Parser = new PhpMimeMailParser\Parser();

// There are four methods available to indicate which mime mail to parse.
// You only need to use one of the following four:

// 1. Specify a file path to the mime mail.
$Parser->setPath($path); 

// 2. Specify a php file resource (stream) to the mime mail.
$Parser->setStream(fopen($path, "r"));

// 3. Specify the raw mime mail text.
$Parser->setText(file_get_contents($path));

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

// Once we've indicated where to find the mail, we can parse out the data
$to = $Parser->getHeader('to');             // "test" <[email protected]>, "test2" <[email protected]>
$addressesTo = $Parser->getAddresses('to'); //Return an array : [[test, [email protected], false],[test2, [email protected], false]]

$from = $Parser->getHeader('from');             // "test" <[email protected]>
$addressesFrom = $Parser->getAddresses('from'); //Return an array : test, [email protected], false

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

$text = $Parser->getMessageBody('text');

$html = $Parser->getMessageBody('html');
$htmlEmbedded = $Parser->getMessageBody('htmlEmbedded'); //HTML Body included data

$stringHeaders = $Parser->getHeadersRaw();	// Get all headers as a string, no charset conversion
$arrayHeaders = $Parser->getHeaders();		// Get all headers as an array, with charset conversion

// Pass in a writeable path to save attachments
$attach_dir = '/path/to/save/attachments/'; 	// Be sure to include the trailing slash
$include_inline = true;  			// Optional argument to include inline attachments (default: true)
$Parser->saveAttachments($attach_dir [,$include_inline]);

// Get an array of Attachment items from $Parser
$attachments = $Parser->getAttachments([$include_inline]);

//  Loop through all the Attachments
if (count($attachments) > 0) {
	foreach ($attachments as $attachment) {
		echo 'Filename : '.$attachment->getFilename().'<br />'; // logo.jpg
		echo 'Filesize : '.filesize($attach_dir.$attachment->getFilename()).'<br />'; // 1000
		echo 'Filetype : '.$attachment->getContentType().'<br />'; // image/jpeg
		echo 'MIME part string : '.$attachment->getMimePartStr().'<br />'; // (the whole MIME part of the attachment)
	}
}

?>

Next you need to forward emails to this script above. For that I'm using Postfix like a mail server, you need to configure /etc/postfix/master.cf

Add this line at the end of the file (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/php5/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 to work with this configuration.

Can I contribute?

Feel free to contribute!

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

php-mime-mail-parser's People

Contributors

exorus avatar fkoyer avatar hadyhallak avatar vincentdauce avatar xqus avatar gmta avatar lucasvdh avatar thibauddauce avatar dorianfm avatar uda avatar luiz-brandao avatar myselfhimself avatar antoineaugusti avatar duncan3dc avatar eryno avatar designosis avatar odknt avatar gharlan avatar ianchadwick avatar ocramius avatar martyix avatar bits4breakfast avatar poison avatar doncallisto avatar wavoe avatar howtomakeaturn avatar

Watchers

Elchin Abilov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.