Jump to content

[SOLVED] Mailparse functions


Moloth

Recommended Posts

Hi, I want to decode multipart messages using the mailparse extension.http://au.php.net/mailparse

And so far have got this working:

 

<?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 = "emails/m5.eml";

/* 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=\"mail.php?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["charset"] . "</td>\n";
        echo "</tr>";
}
echo "</table>";

/* if we were called to display a part, do so now */
if(isset($_GET['showpart'])) {
$showpart = $_GET['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>";;
}
?>

 

Now the question for anyone who has used this... its there a simple way of using the mailparse functions to extract the multipart/alternative section? (The above code will extract this but i am unsure if it can decode it easily too):

 

This is a multi-part message in MIME format.

------=_NextPart_000_0003_01C7EFCC.434D1340
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

TEst sdfsdfsdf
TEst=20
TEst=20

------=_NextPart_000_0003_01C7EFCC.434D1340
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.3157" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>TEst sdfsdfsdf
<DIV><FONT face=3DArial size=3D2>TEst=20
<DIV><FONT face=3DArial size=3D2>TEst=20
</BODY></HTML>

------=_NextPart_000_0003_01C7EFCC.434D1340--

Link to comment
Share on other sites

I just realised that im an idiot (scratching my head for 3hrs)... looking at the actual email message there is the (1) multipart/alternative section with the (1.1) text/plain  (1.2) text/html imbedded within it... so in actual fact there are only 2 different types of messages there. OOps  :-X

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.