jenkins-bot has submitted this change and it was merged.

Change subject: Add Plancake to 1.25wmf6
......................................................................


Add Plancake to 1.25wmf6

Change-Id: I75ea928e34fa065cd7d5e2f518b1a0812979ba89
---
A Plancake/EmailParser/LICENSE.txt
A Plancake/EmailParser/PlancakeEmailParser.php
A Plancake/EmailParser/README.txt
A Plancake/EmailParser/composer.json
A Plancake/EmailParser/tests/emails/0.txt
A Plancake/EmailParser/tests/emails/1.txt
A Plancake/EmailParser/tests/emails/2.txt
A Plancake/EmailParser/tests/emails/from_ipad_with_attachment.txt
A Plancake/EmailParser/tests/emails/subject_on_multiple_lines.txt
A Plancake/EmailParser/tests/run_tests.php
M composer.json
M composer.lock
M composer/ClassLoader.php
M composer/autoload_classmap.php
M composer/autoload_namespaces.php
M composer/installed.json
16 files changed, 1,020 insertions(+), 14 deletions(-)

Approvals:
  Reedy: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Plancake/EmailParser/LICENSE.txt b/Plancake/EmailParser/LICENSE.txt
new file mode 100644
index 0000000..65c5ca8
--- /dev/null
+++ b/Plancake/EmailParser/LICENSE.txt
@@ -0,0 +1,165 @@
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
diff --git a/Plancake/EmailParser/PlancakeEmailParser.php 
b/Plancake/EmailParser/PlancakeEmailParser.php
new file mode 100644
index 0000000..59e6cee
--- /dev/null
+++ b/Plancake/EmailParser/PlancakeEmailParser.php
@@ -0,0 +1,338 @@
+<?php
+
+/*************************************************************************************
+* 
===================================================================================*
+* Software by: Danyuki Software Limited                                        
      *
+* This file is part of Plancake.                                               
      *
+*                                                                              
      *
+* Copyright 2009-2010-2011 by:     Danyuki Software Limited                    
      *
+* Support, News, Updates at:  http://www.plancake.com                          
      *
+* Licensed under the LGPL version 3 license.                                   
      *                                                       *
+* Danyuki Software Limited is registered in England and Wales (Company No. 
07554549) *
+**************************************************************************************
+* Plancake is distributed in the hope that it will be useful,                  
      *
+* but WITHOUT ANY WARRANTY; without even the implied warranty of               
      *
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                
      *
+* GNU Lesser General Public License v3.0 for more details.                     
      *
+*                                                                              
      *
+* You should have received a copy of the GNU Lesser General Public License     
      *
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.        
      *
+*                                                                              
      *
+**************************************************************************************
+*
+* Valuable contributions by:
+* - Chris 
+*
+* 
**************************************************************************************/
+
+/**
+ * Extracts the headers and the body of an email
+ * Obviously it can't extract the bcc header because it doesn't appear in the 
content
+ * of the email.
+ *
+ * N.B.: if you deal with non-English languages, we recommend you install the 
IMAP PHP extension:
+ * the Plancake PHP Email Parser will detect it and used it automatically for 
better results.
+ * 
+ * For more info, check:
+ * https://github.com/plancake/official-library-php-email-parser
+ * 
+ * @author dan
+ */
+class PlancakeEmailParser {
+
+    const PLAINTEXT = 1;
+    const HTML = 2;
+
+    /**
+     *
+     * @var boolean
+     */    
+    private $isImapExtensionAvailable = false;
+    
+    /**
+     *
+     * @var string
+     */
+    private $emailRawContent;
+
+    /**
+     *
+     * @var associative array
+     */
+    protected $rawFields;
+
+    /**
+     *
+     * @var array of string (each element is a line)
+     */
+    protected $rawBodyLines;
+
+    /**
+     *
+     * @param string $emailRawContent
+     */
+    public function  __construct($emailRawContent) {
+        $this->emailRawContent = $emailRawContent;
+
+        $this->extractHeadersAndRawBody();
+        
+        if (function_exists('imap_open')) {
+            $this->isImapExtensionAvailable = true;
+        }
+    }
+
+    private function extractHeadersAndRawBody()
+    {
+        $lines = preg_split("/(\r?\n|\r)/", $this->emailRawContent);
+
+        $currentHeader = '';
+
+        $i = 0;
+        foreach ($lines as $line)
+        {
+            if(self::isNewLine($line))
+            {
+                // end of headers
+                $this->rawBodyLines = array_slice($lines, $i);
+                break;
+            }
+            
+            if ($this->isLineStartingWithPrintableChar($line)) // start of new 
header
+            {
+                preg_match('/([^:]+): ?(.*)$/', $line, $matches);
+                $newHeader = strtolower($matches[1]);
+                $value = $matches[2];
+                $this->rawFields[$newHeader] = $value;
+                $currentHeader = $newHeader;
+            }
+            else // more lines related to the current header
+            {
+                if ($currentHeader) { // to prevent notice from empty lines
+                    $this->rawFields[$currentHeader] .= substr($line, 1);
+                }
+            }
+            $i++;
+        }
+    }
+
+    /**
+     *
+     * @return string (in UTF-8 format)
+     * @throws Exception if a subject header is not found
+     */
+    public function getSubject()
+    {
+        if (!isset($this->rawFields['subject']))
+        {
+            throw new Exception("Couldn't find the subject of the email");
+        }
+        
+        $ret = '';
+        
+        if ($this->isImapExtensionAvailable) {
+            foreach (imap_mime_header_decode($this->rawFields['subject']) as 
$h) { // subject can span into several lines
+                $charset = ($h->charset == 'default') ? 'US-ASCII' : 
$h->charset;
+                $ret .=  iconv($charset, "UTF-8//TRANSLIT", $h->text);
+            }
+        } else {
+            $ret = utf8_encode(iconv_mime_decode($this->rawFields['subject']));
+        }
+        
+        return $ret;
+    }
+
+    /**
+     *
+     * @return array
+     */
+    public function getCc()
+    {
+        if (!isset($this->rawFields['cc']))
+        {
+            return array();
+        }
+
+        return explode(',', $this->rawFields['cc']);
+    }
+
+    /**
+     *
+     * @return array
+     * @throws Exception if a to header is not found or if there are no 
recipient
+     */
+    public function getTo()
+    {
+        if ( (!isset($this->rawFields['to'])) || 
(!count($this->rawFields['to'])))
+        {
+            throw new Exception("Couldn't find the recipients of the email");
+        }
+        return explode(',', $this->rawFields['to']);
+    }
+
+    /**
+     * return string - UTF8 encoded
+     * 
+     * Example of an email body
+     * 
+        --0016e65b5ec22721580487cb20fd
+        Content-Type: text/plain; charset=ISO-8859-1
+
+        Hi all. I am new to Android development.
+        Please help me.
+
+        --
+        My signature
+
+        email: [email protected]
+        web: http://www.example.com
+
+        --0016e65b5ec22721580487cb20fd
+        Content-Type: text/html; charset=ISO-8859-1
+     */
+    public function getBody($returnType=self::PLAINTEXT)
+    {
+        $body = '';
+        $detectedContentType = false;
+        $contentTransferEncoding = null;
+        $charset = 'ASCII';
+        $waitingForContentStart = true;
+
+        if ($returnType == self::HTML)
+            $contentTypeRegex = '/^Content-Type: ?text\/html/i';
+        else
+            $contentTypeRegex = '/^Content-Type: ?text\/plain/i';
+        
+        // there could be more than one boundary
+        preg_match_all('!boundary=(.*)$!mi', $this->emailRawContent, $matches);
+        $boundaries = $matches[1];
+        // sometimes boundaries are delimited by quotes - we want to remove 
them
+        foreach($boundaries as $i => $v) {
+            $boundaries[$i] = str_replace(array("'", '"'), '', $v);
+        }
+        
+        foreach ($this->rawBodyLines as $line) {
+            if (!$detectedContentType) {
+                
+                if (preg_match($contentTypeRegex, $line, $matches)) {
+                    $detectedContentType = true;
+                }
+                
+                if(preg_match('/charset=(.*)/i', $line, $matches)) {
+                    $charset = strtoupper(trim($matches[1], '"')); 
+                }       
+                
+            } else if ($detectedContentType && $waitingForContentStart) {
+                
+                if(preg_match('/charset=(.*)/i', $line, $matches)) {
+                    $charset = strtoupper(trim($matches[1], '"')); 
+                }                 
+                
+                if ($contentTransferEncoding == null && 
preg_match('/^Content-Transfer-Encoding: ?(.*)/i', $line, $matches)) {
+                    $contentTransferEncoding = $matches[1];
+                }                
+                
+                if (self::isNewLine($line)) {
+                    $waitingForContentStart = false;
+                }
+            } else {  // ($detectedContentType && !$waitingForContentStart)
+                // collecting the actual content until we find the delimiter
+                
+                // if the delimited is AAAAA, the line will be --AAAAA  - 
that's why we use substr
+                if (is_array($boundaries)) {
+                    if (in_array(substr($line, 2), $boundaries)) {  // found 
the delimiter
+                        break;
+                    }
+                }
+                $body .= $line . "\n";
+            }
+        }
+
+        if (!$detectedContentType)
+        {
+            // if here, we missed the text/plain content-type (probably it was
+            // in the header), thus we assume the whole body is what we are 
after
+            $body = implode("\n", $this->rawBodyLines);
+        }
+
+        // removing trailing new lines
+        $body = preg_replace('/((\r?\n)*)$/', '', $body);
+
+        if ($contentTransferEncoding == 'base64')
+            $body = base64_decode($body);
+        else if ($contentTransferEncoding == 'quoted-printable')
+            $body = quoted_printable_decode($body);        
+        
+        if($charset != 'UTF-8') {
+            // FORMAT=FLOWED, despite being popular in emails, it is not
+            // supported by iconv
+            $charset = str_replace("FORMAT=FLOWED", "", $charset);
+           
+           $bodyCopy = $body; 
+            $body = iconv($charset, 'UTF-8//TRANSLIT', $body);
+            
+            if ($body === FALSE) { // iconv returns FALSE on failure
+                $body = utf8_encode($bodyCopy);
+            }
+        }
+
+        return $body;
+    }
+
+    /**
+     * @return string - UTF8 encoded
+     * 
+     */
+    public function getPlainBody()
+    {
+        return $this->getBody(self::PLAINTEXT);
+    }
+
+    /**
+     * return string - UTF8 encoded
+     */
+    public function getHTMLBody()
+    {
+        return $this->getBody(self::HTML);
+    }
+
+    /**
+     * N.B.: if the header doesn't exist an empty string is returned
+     *
+     * @param string $headerName - the header we want to retrieve
+     * @return string - the value of the header
+     */
+    public function getHeader($headerName)
+    {
+        $headerName = strtolower($headerName);
+
+        if (isset($this->rawFields[$headerName]))
+        {
+            return $this->rawFields[$headerName];
+        }
+        return '';
+    }
+
+    /**
+     *
+     * @param string $line
+     * @return boolean
+     */
+    public static function isNewLine($line)
+    {
+        $line = str_replace("\r", '', $line);
+        $line = str_replace("\n", '', $line);
+
+        return (strlen($line) === 0);
+    }
+
+    /**
+     *
+     * @param string $line
+     * @return boolean
+     */
+    private function isLineStartingWithPrintableChar($line)
+    {
+        return preg_match('/^[A-Za-z]/', $line);
+    }
+}
+?>
diff --git a/Plancake/EmailParser/README.txt b/Plancake/EmailParser/README.txt
new file mode 100644
index 0000000..7776202
--- /dev/null
+++ b/Plancake/EmailParser/README.txt
@@ -0,0 +1,57 @@
+*** PLANCAKE PHP EMAIL PARSER ***
+
+N.B.: if you deal with non-English languages, we recommend you install the 
IMAP PHP extension:
+the Plancake PHP Email Parser will detect it and used it automatically for 
better results.
+
+This library allows you to easily parse an email given its content (headers + 
body).
+
+Usage example:
+
+
+$emailPath = "/var/mail/spool/dan/new/12323344323234234234";
+$emailParser = new PlancakeEmailParser(file_get_contents($emailPath));
+
+// You can use some predefined methods to retrieve headers...
+$emailTo = $emailParser->getTo();
+$emailSubject = $emailParser->getSubject();
+$emailCc = $emailParser->getCc();
+// ... or you can use the 'general purpose' method getHeader()
+$emailDeliveredToHeader = $emailParser->getHeader('Delivered-To');
+
+$emailBody = $emailParser->getPlainBody();
+
+For more info:
+https://github.com/plancake/official-library-php-email-parser
+
+-----------------------------------------
+
+We love to hear from you ♥. Please, send us any feedback.
+Even if you don't speak English, don't worry, use your native language (we 
have great confidence in Google Translate :-))
+http://www.plancake.com/contact
+
+Please contact us if you need any commercial support with the installation of 
any component or if you would like any customization:
+http://www.plancake.com/contact
+
+Please consider contributing with bug fixes or improvements:
[email protected]
+
+Plancake homepage: http://www.plancake.com
+Support: http://www.plancake.com/forums/forum/13/support-for-developers/
+Subscribe to our blog: http://www.plancake.com/blog
+Follow us on Twitter: http://twitter.com/plancakebakers
+Follow us on Facebook: http://www.facebook.com/plancake
+Donations ♥ : http://www.plancake.com/donate
+
+"Plancake" and "Plancake Team" are trademarks of Daniele Occhipinti.
+(by the way, what about using Plancake Team for team collaboration? 
team.plancake.com)
+
+Brought to you by Danyuki Software Limited, a startup tech company based in 
London, UK.
+
+
+
+Happy plancaking!
+
+Daniele Occhipinti
+Director and Founder of Plancake
+email: [email protected]
+skype: dan_plan (I can speak English and Italian)
diff --git a/Plancake/EmailParser/composer.json 
b/Plancake/EmailParser/composer.json
new file mode 100644
index 0000000..62982a9
--- /dev/null
+++ b/Plancake/EmailParser/composer.json
@@ -0,0 +1,21 @@
+{
+    "name": "floriansemm/official-library-php-email-parser",
+    "type": "library",
+    "description": "Plancake Email Parser is a simple emailparser for php",
+    "keywords": ["email", "parser"],
+    "homepage": "http://www.plancake.com";,
+    "version": "1.0.0",
+    "license": "GPLv3",
+    "authors": [
+        {
+            "name": "Daniele Occhipinti",
+            "email": "[email protected]"
+        }
+    ],
+    "require": {
+        "php": ">=5.3.0"
+    },
+    "autoload": {
+        "psr-0": { "PlancakeEmailParser": "." }
+    }
+}
diff --git a/Plancake/EmailParser/tests/emails/0.txt 
b/Plancake/EmailParser/tests/emails/0.txt
new file mode 100644
index 0000000..1aa9eb8
--- /dev/null
+++ b/Plancake/EmailParser/tests/emails/0.txt
@@ -0,0 +1,68 @@
+Delivered-To: [email protected]
+Received: by 10.76.34.137 with SMTP id z9csp136640oai;
+        Tue, 28 Aug 2012 02:40:28 -0700 (PDT)
+Received: by 10.68.234.6 with SMTP id ua6mr41487056pbc.117.1346146817853;
+        Tue, 28 Aug 2012 02:40:17 -0700 (PDT)
+Return-Path: <[email protected]>
+Received: from xxxxx-asmtp001.mac.com (xxxxx-asmtp001.mac.com. [17.157.161.0])
+        by mx.google.com with ESMTP id 
qs7si36267775pbc.282.2012.08.28.02.40.16;
+        Tue, 28 Aug 2012 02:40:17 -0700 (PDT)
+Received-SPF: pass (google.com: domain of [email protected] designates 
17.157.161.0 as permitted sender) client-ip=17.157.161.0;
+Authentication-Results: mx.google.com; spf=pass (google.com: domain of 
[email protected] designates 17.157.161.0 as permitted sender) 
[email protected]
+MIME-version: 1.0
+Content-type: multipart/mixed; boundary="Boundary_(ID_HBjaZsKd/JYCOBj0NwKdIg)"
+Received: from pc-Pawel.local
+ (84-10-143-154.dynamic.chello.pl [84.10.143.154])
+ by xxxxx-asmtp001.mac.com
+ (Oracle Communications Messaging Server 7u4-23.01(7.0.4.23.0) 64bit (built Aug
+ 10 2011)) with ESMTPSA id <[email protected]> for
+ [email protected]; Tue, 28 Aug 2012 09:40:16 +0000 (GMT)
+X-Proofpoint-Virus-Version: vendor=fsecure
+ engine=2.50.10432:5.7.7855,1.0.428,0.0.0000
+ definitions=2012-08-28_02:2012-08-28,2012-08-27,1970-01-01 signatures=0
+X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0
+ ipscore=0 suspectscore=4 phishscore=0 bulkscore=0 adultscore=0 classifier=spam
+ adjust=0 reason=mlx scancount=1 engine=6.0.2-1203120001
+ definitions=main-1208280046
+Message-id: <[email protected]>
+Date: Tue, 28 Aug 2012 11:40:10 +0200
+From: Pawel <[email protected]>
+User-Agent: Postbox 3.0.5 (Macintosh/20120826)
+To: [email protected]
+Subject: =?UTF-8?B?emHFvMOzxYLEhyBnxJnFm2zEhSBqYcW6xYQgaSB6csOzYiBwcsOzYm4=?=
+ =?UTF-8?B?ZSB6YWRhbmllICUldG9k?=
+
+This is a multi-part message in MIME format.
+
+--Boundary_(ID_HBjaZsKd/JYCOBj0NwKdIg)
+Content-type: multipart/alternative;
+ boundary="Boundary_(ID_IwJgqMZPSLzwxvKroSd+xg)"
+
+
+--Boundary_(ID_IwJgqMZPSLzwxvKroSd+xg)
+Content-type: text/plain; CHARSET=US-ASCII; format=flowed
+Content-transfer-encoding: 7BIT
+
+This is a nonesense test-email to check Plancake Mail to Inbox feature. 
+All Polish diacritics included ;-) tag also included for additional tests.
+It should look like in the picture attached.
+Best regards
+Pawel
+
+--Boundary_(ID_IwJgqMZPSLzwxvKroSd+xg)
+Content-type: text/html; CHARSET=US-ASCII
+Content-transfer-encoding: 7BIT
+
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8"></head><body
+ style="font-family: tt; font-size: 10pt;" bgcolor="#FFFFFF" 
+text="#000000">
+<div style="font-size: 10pt;font-family: tt;"><span style="font-family: 
+monospace;">This is a nonesense test-email to check Plancake Mail to 
+Inbox feature. All Polish diacritics included ;-) tag also included for 
+additional tests.<br>It should look like in the picture attached.<br>Best
+ regards<br>Pawel<br></span></div>
+</body>
+</html>
+
+--Boundary_(ID_IwJgqMZPSLzwxvKroSd+xg)--
diff --git a/Plancake/EmailParser/tests/emails/1.txt 
b/Plancake/EmailParser/tests/emails/1.txt
new file mode 100644
index 0000000..a08ab14
--- /dev/null
+++ b/Plancake/EmailParser/tests/emails/1.txt
@@ -0,0 +1,50 @@
+                                                                               
                                                                                
                                                                                
                
+Delivered-To: [email protected]
+Received: by 10.114.17.33 with SMTP id l1csp3122ldd;
+        Tue, 18 Sep 2012 02:41:44 -0700 (PDT)
+Received: by 10.58.239.232 with SMTP id vv8mr9429162vec.37.1347961303872;
+        Tue, 18 Sep 2012 02:41:43 -0700 (PDT)
+Return-Path: <[email protected]>
+Received: from mail-vb0-f50.google.com (mail-vb0-f50.google.com 
[209.85.212.50])
+        by mx.google.com with ESMTPS id l6si7688147vcq.72.2012.09.18.02.41.43
+        (version=TLSv1/SSLv3 cipher=OTHER);
+        Tue, 18 Sep 2012 02:41:43 -0700 (PDT)
+Received-SPF: neutral (google.com: 209.85.212.50 is neither permitted nor 
denied by best guess record for domain of [email protected]) 
client-ip=209.85.212.50;
+Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.212.50 
is neither permitted nor denied by best guess record for domain of 
[email protected]) [email protected]
+Received: by mail-vb0-f50.google.com with SMTP id l22so8808870vbn.9
+        for <[email protected]>; Tue, 18 Sep 2012 02:41:43 -0700 (PDT)
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=google.com; s=20120113;
+        h=mime-version:x-originating-ip:from:date:message-id:subject:to
+         :content-type:x-gm-message-state;
+        bh=PspmOkExwaKjIUREisshzexR2oetA5uzuTOojKs40T0=;
+        b=c4Gqdb/v+bU+oDTpZhBBWcx+NMkKhesUWzEkXvJkMNePD7EEvc3/rMcrSoy4+I+8RR
+         gr3dfPEEdqZ769R3YFJ4xr3P5df1vxQhPfdanOpA7L2PwtRGBjXgLAZKENM9erZKmkdQ
+         q+uXwOYNLtNuF5kDKGX8TvC6AP2PUAlcKvIduGoJ30inP/noD0batOmI9BpDNT8NIFAK
+         ldnVuLB7Iy6aJK0REQQA5beFOm2xPvnqTVPYbD89xDjpjRIrCQ/hhM7pWmYPPHMoju7t
+         aeYSgvs5pv3Tfp0lMb5yBXIYp/WS6r80pElbjozctMs3TrEEKRbLdGKGc2t9Q9EIhRul
+         AfsQ==
+Received: by 10.52.36.34 with SMTP id n2mr4808159vdj.105.1347961302979; Tue,
+ 18 Sep 2012 02:41:42 -0700 (PDT)
+MIME-Version: 1.0
+Received: by 10.58.222.103 with HTTP; Tue, 18 Sep 2012 02:41:22 -0700 (PDT)
+X-Originating-IP: [109.158.215.220]
+From: "Dan @ Test.com" <[email protected]>
+Date: Tue, 18 Sep 2012 10:41:22 +0100
+Message-ID: <cacm7m_mmt14q-dqjeqqh8xv_jqsbrnga4owfxjkn0loe_bw...@mail.test.com>
+Subject: this is a test
+To: Daniele  <[email protected]>
+Content-Type: multipart/alternative; boundary=20cf307f398ea295d904c9f6b2a6
+X-Gm-Message-State: 
ALoCoQlh01kch4ywUSwY0xXJAZx7DW352l9t4+rs/FsY2P46f3kTi0FiEekDb37jju+fr0rhOr+3
+
+--20cf307f398ea295d904c9f6b2a6
+Content-Type: text/plain; charset=ISO-8859-1
+
+Hope it works!
+
+--20cf307f398ea295d904c9f6b2a6
+Content-Type: text/html; charset=ISO-8859-1
+
+Hope it works!<br><div title="signature"> </div>
+
+--20cf307f398ea295d904c9f6b2a6--
diff --git a/Plancake/EmailParser/tests/emails/2.txt 
b/Plancake/EmailParser/tests/emails/2.txt
new file mode 100644
index 0000000..7e4cb16
--- /dev/null
+++ b/Plancake/EmailParser/tests/emails/2.txt
@@ -0,0 +1,52 @@
+                                                                               
                                                                                
                                                                                
                
+Delivered-To: [email protected]
+Received: by 10.114.17.33 with SMTP id l1csp4056ldd;
+        Tue, 18 Sep 2012 03:26:33 -0700 (PDT)
+Received: by 10.221.1.137 with SMTP id nq9mr9146920vcb.16.1347963992703;
+        Tue, 18 Sep 2012 03:26:32 -0700 (PDT)
+Return-Path: <[email protected]>
+Received: from mail-vb0-f46.google.com (mail-vb0-f46.google.com 
[209.85.212.46])
+        by mx.google.com with ESMTPS id nr9si7739478vcb.47.2012.09.18.03.26.31
+        (version=TLSv1/SSLv3 cipher=OTHER);
+        Tue, 18 Sep 2012 03:26:32 -0700 (PDT)
+Received-SPF: neutral (google.com: 209.85.212.46 is neither permitted nor 
denied by best guess record for domain of [email protected]) 
client-ip=209.85.212.46;
+Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.212.46 
is neither permitted nor denied by best guess record for domain of 
[email protected]) [email protected]
+Received: by mail-vb0-f46.google.com with SMTP id ff1so4097773vbb.19
+        for <[email protected]>; Tue, 18 Sep 2012 03:26:31 -0700 (PDT)
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=google.com; s=20120113;
+        h=mime-version:x-originating-ip:from:date:message-id:subject:to
+         :content-type:x-gm-message-state;
+        bh=AkxZ77/pitG59A/NWKlbLstrhunK6KXfB2fNB4YSalk=;
+        b=bhfvZKO9bbkr4akjdJ5vaot480TiITsjBMdjtxCMAg4RPnoed6IsivejP9cJZcIIPq
+         N0O2CaPv1z9DyT4DXlPYJTAMUSvHg8KWZIUp7rfKZ0X7Y9OWWIHkIaApqfMpM61OF0qo
+         wbCG7boJ2fbtdDPZQ3z+LamDKAChU7ayuplQYN0vMqkpRlYw9YLnM6BOO4Yj66TZ8q6M
+         WAVdM1kFVP+r2QGd7ka3UWM55Ah9R9dg2SRmBN3W6EBV91IVWw4DQ9Ufucr65YnCU/GA
+         qe3AuaeHf0Th2CnMn/mlMbeEm+vG3WD+G3ZQ8+UpKkDFdN4GlrB3JnnDc6AV3o4weske
+         tYQA==
+Received: by 10.58.65.40 with SMTP id u8mr9411987ves.47.1347963991825; Tue, 18
+ Sep 2012 03:26:31 -0700 (PDT)
+MIME-Version: 1.0
+Received: by 10.58.222.103 with HTTP; Tue, 18 Sep 2012 03:26:11 -0700 (PDT)
+X-Originating-IP: [109.158.215.220]
+From: "Dan" <[email protected]>
+Date: Tue, 18 Sep 2012 11:26:11 +0100
+Message-ID: <CACm7M_MSh=skfbnw2t0s6d_rh1e3ntcauowd2jao55hwidx...@mail.test.com>
+Subject: =?ISO-2022-JP?B?GyRCJDMkbCRPJUYlOSVIJEckORsoQg==?=
+To: Daniele <[email protected]>
+Content-Type: multipart/alternative; boundary=047d7b6d8564e71cac04c9f75290
+X-Gm-Message-State: 
ALoCoQlwrVoZ6rkTcekymixxwzWXjBHxmM0yFX4xQ/t74eEEfsoU2nSbGLhgaz8HYimU8WeCI7ll
+
+--047d7b6d8564e71cac04c9f75290
+Content-Type: text/plain; charset=ISO-2022-JP
+Content-Transfer-Encoding: 7bit
+
+$B$=$l$O:nIJ$r4|BT(B
+
+--047d7b6d8564e71cac04c9f75290
+Content-Type: text/html; charset=ISO-2022-JP
+Content-Transfer-Encoding: 7bit
+
+$B$=$l$O:nIJ$r4|BT(B<div title="signature"> </div>
+
+--047d7b6d8564e71cac04c9f75290--
diff --git a/Plancake/EmailParser/tests/emails/from_ipad_with_attachment.txt 
b/Plancake/EmailParser/tests/emails/from_ipad_with_attachment.txt
new file mode 100644
index 0000000..151fd18
--- /dev/null
+++ b/Plancake/EmailParser/tests/emails/from_ipad_with_attachment.txt
@@ -0,0 +1,116 @@
+Return-Path: <[email protected]>
+X-Original-To: [email protected]
+Delivered-To: [email protected]
+Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com 
[209.85.212.175])
+       by server1.examplebox.com (Postfix) with ESMTP id 4D2F41BD0001
+       for <[email protected]>; Tue,  9 Oct 2012 18:23:24 
+0100 (BST)
+Received: by mail-wi0-f175.google.com with SMTP id hq4so4164838wib.16
+        for <[email protected]>; Tue, 09 Oct 2012 10:23:24 
-0700 (PDT)
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=google.com; s=20120113;
+        h=subject:from:content-type:message-id:date:to
+         :content-transfer-encoding:mime-version:x-mailer:x-gm-message-state;
+        bh=lZwtjDDR63eEQyHRrh6iaIeV+u3+bVKEbNh1HEr7PEk=;
+        b=lJvUiccuU7CBGYcweNmCtYtIbc4/Yv6bFCPJcuAGWl/E/0JyaW3ddtuonfDUJg4dgW
+         RPwZFbJIw+LSmJ2pvgwZLH3+EtTkxyu/I6eMD2kamY6h6OZX3PCAEtJOLDjnPSDTbPJX
+         9MnAREflBgjzlV/qJIcJ4f1Jd4YQhrDHCfawEVpw1X8r8rbjiRwxkGMEttfju20zoFP1
+         T12+FYeNvYkEvVFmlN5I7Xfu5RFhjI5Bl1FpldBMipeouWZMsNLnI8R5GTkdfT2fW6uh
+         gVi1MY90uHlDQtJSvc4SuLYAJlTRtoYTeQRvHD/G4Z7cVU8OBFh9Tl/8xoA2OE9Pe2EC
+         m09Q==
+Received: by 10.180.87.34 with SMTP id u2mr6205630wiz.4.1349803404038;
+        Tue, 09 Oct 2012 10:23:24 -0700 (PDT)
+Received: from [192.168.1.102] 
(host86-161-128-242.range86-161.btcentralplus.com. [86.161.128.242])
+        by mx.google.com with ESMTPS id b3sm25802929wie.0.2012.10.09.10.23.19
+        (version=TLSv1/SSLv3 cipher=OTHER);
+        Tue, 09 Oct 2012 10:23:21 -0700 (PDT)
+Subject: Voice Memo
+From: Dan Occhi <[email protected]>
+Content-Type: multipart/mixed; 
boundary=Apple-Mail-08783E7E-BDCB-4708-8BF5-33F388A6F25E
+Message-Id: <[email protected]>
+Date: Tue, 9 Oct 2012 18:23:09 +0100
+To: "[email protected]" 
<[email protected]>
+Content-Transfer-Encoding: 7bit
+Mime-Version: 1.0 (1.0)
+X-Mailer: iPad Mail (9B206)
+X-Gm-Message-State: 
ALoCoQl85Cg6qs32nNDmF9Dfb9MxUWrp3B60UwPIgbbUOsz6lvJr89zMNMyii0pADDHwLLcHxU5t
+
+
+--Apple-Mail-08783E7E-BDCB-4708-8BF5-33F388A6F25E
+Content-Transfer-Encoding: 7bit
+Content-Type: text/plain;
+       charset=us-ascii
+
+
+
+
+--Apple-Mail-08783E7E-BDCB-4708-8BF5-33F388A6F25E
+Content-Disposition: attachment;
+       filename=example_vmr_09102012182307.3gp
+Content-Type: audio/caf;
+       name=example_vmr_09102012182307.3gp
+Content-Transfer-Encoding: base64
+
+Y2FmZgABAABkZXNjAAAAAAAAACBA5YiAAAAAAGltYTQAAAAAAAAARAAAAEAAAAACAAAAAGt1a2kA
+AAAAAAAAAGZyZWUAAAAAAAAPpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
+
+--Apple-Mail-08783E7E-BDCB-4708-8BF5-33F388A6F25E
+Content-Transfer-Encoding: 7bit
+Content-Type: text/plain;
+       charset=us-ascii
+
+
+
+
+Sent from my iPad
+--Apple-Mail-08783E7E-BDCB-4708-8BF5-33F388A6F25E--
diff --git a/Plancake/EmailParser/tests/emails/subject_on_multiple_lines.txt 
b/Plancake/EmailParser/tests/emails/subject_on_multiple_lines.txt
new file mode 100644
index 0000000..06c7084
--- /dev/null
+++ b/Plancake/EmailParser/tests/emails/subject_on_multiple_lines.txt
@@ -0,0 +1,24 @@
+Return-Path: <[email protected]>
+Delivered-To: [email protected]
+Received: from h0.host.net (HELO queue) (123.123.33.50)
+       by h0.host.net with SMTP; 10 May 2012 16:41:46 +0200
+Received: from mx.aruba.it (321.321.157.29)
+  by mx.host.net with SMTP; 10 May 2012 16:41:44 +0200
+Received: (qmail 11142 invoked by uid 89); 10 May 2012 14:41:43 -0000
+Date: 10 May 2012 14:41:43 -0000
+Message-ID: <[email protected]>
+Delivered-To: Autoresponder
+To: [email protected]
+From: [email protected]
+Subject: Re: =?UTF-8?Q?Testo=20Del=20di=20Soggetto=20Che=20?=
+       =?UTF-8?Q?Va=20A=20Capo=20In=20UTF8=20?=
+X-Spam-Check: DONE|U 0.500569/N
+X-Spam-Check: OK
+
+
+
+Da: [email protected]
+Oggetto: Grazie!!!
+
+Nome Cognome
+
diff --git a/Plancake/EmailParser/tests/run_tests.php 
b/Plancake/EmailParser/tests/run_tests.php
new file mode 100644
index 0000000..543312e
--- /dev/null
+++ b/Plancake/EmailParser/tests/run_tests.php
@@ -0,0 +1,18 @@
+<?php
+
+// run this as:
+// php run_tests.php
+
+require_once("../PlancakeEmailParser.php");
+
+$emails = glob('./emails/*');
+
+echo "\r\n\r\n\r\n";
+
+foreach($emails as $email) {
+       echo "Email $email \r\n";
+       $emailParser = new PlancakeEmailParser(file_get_contents($email));
+       echo "subject: " . $emailParser->getSubject() . "\r\n";
+       echo "body: " . $emailParser->getBody() . "\r\n";
+       echo "\r\n\r\n\r\n";
+}
diff --git a/composer.json b/composer.json
index 35b4625..f9419f4 100644
--- a/composer.json
+++ b/composer.json
@@ -3,10 +3,17 @@
        "description": "External libraries required or recommened for use with 
MediaWiki",
        "type": "managed-library-collection",
        "license": "GPL-2.0+",
+       "repositories": [
+               {
+                       "type": "vcs",
+                       "url": 
"https://github.com/plancake/official-library-php-email-parser";
+               }
+       ],
        "require": {
                "php": ">=5.3.2",
                "psr/log": "1.0.0",
-               "monolog/monolog": "1.9.1"
+               "monolog/monolog": "1.9.1",
+               "Plancake/EmailParser": 
"dev-master#e7453ead1f3a74810d8050a30afb96feed74477a"
        },
        "prefer-stable": true,
        "config": {
diff --git a/composer.lock b/composer.lock
index f049e29..5227155 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,52 @@
         "Read more about it at 
http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file";,
         "This file is @generated automatically"
     ],
-    "hash": "4f3aa259d9697d3c2a891b80db7e48de",
+    "hash": "ecf5967bbb4ad2c401b71af49c25b210",
     "packages": [
+        {
+            "name": "Plancake/EmailParser",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": 
"https://github.com/plancake/official-library-php-email-parser.git";,
+                "reference": "e7453ead1f3a74810d8050a30afb96feed74477a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": 
"https://api.github.com/repos/plancake/official-library-php-email-parser/zipball/2108a328221b2994ab4ed16e608dcfbe7937d57e";,
+                "reference": "e7453ead1f3a74810d8050a30afb96feed74477a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "PlancakeEmailParser": "."
+                }
+            },
+            "license": [
+                "GPLv3"
+            ],
+            "authors": [
+                {
+                    "name": "Daniele Occhipinti",
+                    "email": "[email protected]"
+                }
+            ],
+            "description": "Plancake Email Parser is a simple emailparser for 
php",
+            "homepage": "http://www.plancake.com";,
+            "keywords": [
+                "email",
+                "parser"
+            ],
+            "support": {
+                "source": 
"https://github.com/plancake/official-library-php-email-parser/tree/master";,
+                "issues": 
"https://github.com/plancake/official-library-php-email-parser/issues";
+            },
+            "time": "2013-09-05 21:02:55"
+        },
         {
             "name": "monolog/monolog",
             "version": "1.9.1",
@@ -113,21 +157,15 @@
             "time": "2012-12-21 11:40:51"
         }
     ],
-    "packages-dev": [
-
-    ],
-    "aliases": [
-
-    ],
+    "packages-dev": [],
+    "aliases": [],
     "minimum-stability": "stable",
-    "stability-flags": [
-
-    ],
+    "stability-flags": {
+        "plancake/emailparser": 20
+    },
     "prefer-stable": true,
     "platform": {
         "php": ">=5.3.2"
     },
-    "platform-dev": [
-
-    ]
+    "platform-dev": []
 }
diff --git a/composer/ClassLoader.php b/composer/ClassLoader.php
index 88684c5..4433649 100644
--- a/composer/ClassLoader.php
+++ b/composer/ClassLoader.php
@@ -143,6 +143,8 @@
      * @param string       $prefix  The prefix/namespace, with trailing '\\'
      * @param array|string $paths   The PSR-0 base directories
      * @param bool         $prepend Whether to prepend the directories
+     *
+     * @throws \InvalidArgumentException
      */
     public function addPsr4($prefix, $paths, $prepend = false)
     {
@@ -204,6 +206,8 @@
      *
      * @param string       $prefix The prefix/namespace, with trailing '\\'
      * @param array|string $paths  The PSR-4 base directories
+     *
+     * @throws \InvalidArgumentException
      */
     public function setPsr4($prefix, $paths)
     {
diff --git a/composer/autoload_classmap.php b/composer/autoload_classmap.php
index 8362043..7accfaf 100644
--- a/composer/autoload_classmap.php
+++ b/composer/autoload_classmap.php
@@ -77,6 +77,7 @@
     'Monolog\\Processor\\UidProcessor' => $vendorDir . 
'/monolog/monolog/src/Monolog/Processor/UidProcessor.php',
     'Monolog\\Processor\\WebProcessor' => $vendorDir . 
'/monolog/monolog/src/Monolog/Processor/WebProcessor.php',
     'Monolog\\Registry' => $vendorDir . 
'/monolog/monolog/src/Monolog/Registry.php',
+    'PlancakeEmailParser' => $vendorDir . 
'/Plancake/EmailParser/PlancakeEmailParser.php',
     'Psr\\Log\\AbstractLogger' => $vendorDir . 
'/psr/log/Psr/Log/AbstractLogger.php',
     'Psr\\Log\\InvalidArgumentException' => $vendorDir . 
'/psr/log/Psr/Log/InvalidArgumentException.php',
     'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php',
diff --git a/composer/autoload_namespaces.php b/composer/autoload_namespaces.php
index 9ebc80b..472735a 100644
--- a/composer/autoload_namespaces.php
+++ b/composer/autoload_namespaces.php
@@ -7,4 +7,5 @@
 
 return array(
     'Psr\\Log\\' => array($vendorDir . '/psr/log'),
+    'PlancakeEmailParser' => array($vendorDir . '/Plancake/EmailParser'),
 );
diff --git a/composer/installed.json b/composer/installed.json
index 681762f..5b74f2a 100644
--- a/composer/installed.json
+++ b/composer/installed.json
@@ -108,5 +108,51 @@
             "logging",
             "psr-3"
         ]
+    },
+    {
+        "name": "Plancake/EmailParser",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
+        "source": {
+            "type": "git",
+            "url": 
"https://github.com/plancake/official-library-php-email-parser.git";,
+            "reference": "e7453ead1f3a74810d8050a30afb96feed74477a"
+        },
+        "dist": {
+            "type": "zip",
+            "url": 
"https://api.github.com/repos/plancake/official-library-php-email-parser/zipball/2108a328221b2994ab4ed16e608dcfbe7937d57e";,
+            "reference": "e7453ead1f3a74810d8050a30afb96feed74477a",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.0"
+        },
+        "time": "2013-09-05 21:02:55",
+        "type": "library",
+        "installation-source": "dist",
+        "autoload": {
+            "psr-0": {
+                "PlancakeEmailParser": "."
+            }
+        },
+        "license": [
+            "GPLv3"
+        ],
+        "authors": [
+            {
+                "name": "Daniele Occhipinti",
+                "email": "[email protected]"
+            }
+        ],
+        "description": "Plancake Email Parser is a simple emailparser for php",
+        "homepage": "http://www.plancake.com";,
+        "keywords": [
+            "email",
+            "parser"
+        ],
+        "support": {
+            "source": 
"https://github.com/plancake/official-library-php-email-parser/tree/master";,
+            "issues": 
"https://github.com/plancake/official-library-php-email-parser/issues";
+        }
     }
 ]

-- 
To view, visit https://gerrit.wikimedia.org/r/171321
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I75ea928e34fa065cd7d5e2f518b1a0812979ba89
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vendor
Gerrit-Branch: wmf/1.25wmf6
Gerrit-Owner: Reedy <[email protected]>
Gerrit-Reviewer: Reedy <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to