mirror of
https://github.com/php/php-src.git
synced 2024-10-15 05:22:48 +00:00
6468f8b492
@- New mailparse extension for parsing and manipulating MIME mail (Wez)
80 lines
2.8 KiB
Plaintext
80 lines
2.8 KiB
Plaintext
mailparse library for PHP 4
|
|
===========================
|
|
|
|
This library is build upon the librfc822 and librfc2045 libraries that
|
|
originated from the maildrop component of the courier mail server.
|
|
The copyright for most of the work belongs to Double Precision Inc.,
|
|
although distribution of the library is carried out under the terms of the
|
|
GPL.
|
|
|
|
Example for PHP:
|
|
=============
|
|
|
|
$file = "/path/to/rfc822/compliant/message";
|
|
|
|
$mime = mailparse_rfc2045_parse_file($file);
|
|
$ostruct = mailparse_rfc2045_getstructure($mime);
|
|
foreach($ostruct as $st) {
|
|
$section = mailparse_rfc2045_find($mime, $st);
|
|
$struct[$st] = mailparse_rfc2045_getinfo($section);
|
|
}
|
|
var_dump($struct);
|
|
|
|
array mailparse_rfc822_parse_addresses(string addresses)
|
|
parses an rfc822 compliant recipient list, such as that found in To: From:
|
|
headers. Returns a indexed array of assoc. arrays for each recipient:
|
|
array(0 => array("display" => "Wez Furlong", "address" => "wez@php.net"))
|
|
|
|
resource mailparse_rfc2045_create()
|
|
Create a mime mail resource
|
|
|
|
boolean mailparse_rfc2045_parse(resource mimemail, string data)
|
|
incrementally parse data into the supplied mime mail resource.
|
|
Concept: you can stream portions of a file at a time, rather than read
|
|
and parse the whole thing.
|
|
|
|
|
|
resource mailparse_rfc2045_parse_file(string $filename)
|
|
Parse a file and return a $mime resource.
|
|
The file is opened and streamed through the parser.
|
|
This is the optimal way of parsing a mail file that
|
|
you have on disk.
|
|
|
|
|
|
array mailparse_rfc2045_getstructure(resource mimemail)
|
|
returns an array containing a list of message parts in the form:
|
|
array("1", "1.1", "1.2")
|
|
|
|
resource mailparse_rfc2045_find(resource mimemail, string partname)
|
|
returns an mime mail resource representing the named section
|
|
|
|
array mailparse_rfc2045_getinfo(resource mimemail)
|
|
returns an array containing the bounds, content type and headers of the
|
|
section.
|
|
|
|
mailparse_rfc2045_extract_file(resource mimemail, string filename[, string
|
|
callbackfunc])
|
|
Extracts/decodes a message section from the supplied filename.
|
|
If no callback func is supplied, it outputs the results into the current
|
|
output buffer, otherwise it calls the callback with a string parameter
|
|
containing the text.
|
|
The contents of the section will be decoded according to their transfer
|
|
encoding - base64, quoted-printable and uuencoded text are supported.
|
|
|
|
All operations are done incrementally; streaming the input and output so that
|
|
memory usage is on the whole lower than something like procmail or doing this
|
|
stuff in PHP space. The aim is that it stays this way to handle large
|
|
quantities of email.
|
|
|
|
TODO:
|
|
=====
|
|
|
|
. Add support for binhex encoding?
|
|
. Extracting a message part without decoding the transfer encoding so that
|
|
eg: pgp-signatures can be verified.
|
|
|
|
. Work the other way around - build up a rfc2045 compliant message file from
|
|
simple structure information and filenames/variables.
|
|
|
|
vim:tw=78
|