Also dont forget to LOAD mbstring before you load mailparse
example in the php.ini place in this order:
extension=php_mbstring.dll
extension=php_mailparse.dll
Or you will get an error.
Ian
Mailparse Functions
Introduction
Mailparse is an extension for parsing and working with email messages. It can deal with » RFC 822 and » RFC 2045 (MIME) compliant messages.
Mailparse is stream based, which means that it does not keep in-memory copies of the files it processes - so it is very resource efficient when dealing with large messages.
Note: Mailparse requires the mbstring extension, and mbstring must be loaded before mailparse.
This extension has been moved to the » PECL repository and is no longer bundled with PHP as of PHP 4.2.0.
Installation
This » PECL extension is not bundled with PHP. Information for installing this PECL extension may be found in the manual chapter titled Installation of PECL extensions. Additional information such as new releases, downloads, source files, maintainer information, and a CHANGELOG, can be located here: » http://pecl.php.net/package/mailparse.
In order to use these functions you must compile PHP with mailparse support by using the --enable-mailparse configure option.
Windows users will enable php_mailparse.dll inside of php.ini in order to use these functions. The DLL for this PECL extension may be downloaded from either the » PHP Downloads page or from » http://pecl4win.php.net/
Runtime Configuration
The behaviour of these functions is affected by settings in php.ini.
| Name | Default | Changeable | Changelog |
|---|---|---|---|
| mailparse.def_charset | "us-ascii" | PHP_INI_ALL | Available since PHP 4.1.0. Removed in PHP 4.2.0. |
Table of Contents
- mailparse_determine_best_xfer_encoding — Gets the best way of encoding
- mailparse_msg_create — Create a mime mail resource
- mailparse_msg_extract_part_file — Extracts/decodes a message section
- mailparse_msg_extract_part — Extracts/decodes a message section
- mailparse_msg_extract_whole_part_file — Extracts a message section including headers without decoding the transfer encoding
- mailparse_msg_free — Frees a MIME resource
- mailparse_msg_get_part_data — Returns an associative array of info about the message
- mailparse_msg_get_part — Returns a handle on a given section in a mimemessage
- mailparse_msg_get_structure — Returns an array of mime section names in the supplied message
- mailparse_msg_parse_file — Parses a file
- mailparse_msg_parse — Incrementally parse data into buffer
- mailparse_rfc822_parse_addresses — Parse RFC 822 compliant addresses
- mailparse_stream_encode — Streams data from source file pointer, apply encoding and write to destfp
- mailparse_uudecode_all — Scans the data from fp and extract each embedded uuencoded file
Mailparse
21-May-2004 08:31
12-Sep-2003 06:11
Example how to handle mail content from a variable:
<?php
$buffer = [...] // Mail Content from pipe or whatever
$mail = mailparse_msg_create();
mailparse_msg_parse($mail,$buffer);
$struct = mailparse_msg_get_structure($mail);
foreach($struct as $st) {
$section = mailparse_msg_get_part($mail, $st);
$info = mailparse_msg_get_part_data($section);
print_r($info);
}
?>
09-Jul-2002 12:45
[Authors note:
The tarball for 4.2.x can be found here:
http://thebrainroom.com/opensource/php/mailparse.php
and contains a script called try.php that demonstrates the usage of these functions.
]
I've pasted the contents of the file below:
<?php
/*
* This is a simple email viewer.
* make sure that $filename points to a file containing an email message and
* load this page in your browser.
* You will be able to choose a part to view.
* */
$filename = "uumsg";
/* parse the message and return a mime message resource */
$mime = mailparse_msg_parse_file($filename);
/* return an array of message parts - this contsists of the names of the parts
* only */
$struct = mailparse_msg_get_structure($mime);
echo "<table>\n";
/* print a choice of sections */
foreach($struct as $st) {
echo "<tr>\n";
echo "<td><a href=\"$PHP_SELF?showpart=$st\">$st</a></td>\n";
/* get a handle on the message resource for a subsection */
$section = mailparse_msg_get_part($mime, $st);
/* get content-type, encoding and header information for that section */
$info = mailparse_msg_get_part_data($section);
echo "\n";
echo "<td>" . $info["content-type"] . "</td>\n";
echo "<td>" . $info["content-disposition"] . "</td>\n";
echo "<td>" . $info["disposition-filename"] . "</td>\n";
echo "<td>" . $info["charset"] . "</td>\n";
echo "</tr>";
}
echo "</table>";
/* if we were called to display a part, do so now */
if ($showpart) {
/* get a handle on the message resource for the desired part */
$sec = mailparse_msg_get_part($mime, $showpart);
echo "<table border=1><tr><th>Section $showpart</th></tr><tr><td>";
ob_start();
/* extract the part from the message file and dump it to the output buff
er
* */
mailparse_msg_extract_part_file($sec, $filename);
$contents = ob_get_contents();
ob_end_clean();
/* quote the message for safe display in a browser */
echo nl2br(htmlentities($contents)) . "</td></tr></table>";;
}
?>
