Hello,
I have created a script that reads an email's contents from the STDIN. This is used for piping (parsing emails). I was wondering if anyone knew of a good class other than the one listed at evolt.org of how to read this email. The email format comes thorugh such as this:

Gmail sends the body of the message twice. Does anyone know of a good way to extract the body of the email, and if possible, the attachment name and data (not as important yet but would be nice).

It would be really nice to be able to grab the:
$to
$from
$subject
$body
$attachments[$i]['name']
$attachments[$i]['mime type']
$attachments[$i]['size']
$attachments[$i]['data']

From from_email@email.com Mon Sep 25 22:58:51 2006
Received: from [66.249.92.173] (helo=ug-out-1314.google.com)
	by fly.nocvillage.com with esmtp (Exim 4.52)
	id 1GS45p-00085h-Qr
	for piped_email@email.com; Mon, 25 Sep 2006 22:58:50 -0500
Received: by ug-out-1314.google.com with SMTP id m3so5440455uge
        for <piped_email@email.com>; Mon, 25 Sep 2006 20:58:59 -0700 (PDT)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
        s=beta; d=gmail.com;
        h=received:message-id:date:from:to:subject:mime-version:content-type;
        b=mnyh6IlD3bBjFq3rrWPY1WFDdAMoyzirlEi2q0PLZqbaUblqOj2Oe1lMKTxsn4QIVDE9Tp8zAwCGch7BJqzMp2HMLuO3nNq/S1kiYOjX87Zd/+7bnHMGLQM0i+WfKnjWMlDKacnURoSIsLdX82Qy56oBcO/EK6LymhaK6BlSo8E=
Received: by 10.67.91.6 with SMTP id t6mr252956ugl;
        Mon, 25 Sep 2006 20:58:58 -0700 (PDT)
Received: by 10.66.238.14 with HTTP; Mon, 25 Sep 2006 20:58:58 -0700 (PDT)
Message-ID: <59cc1d440609252058l36e12034q6068589d4943477e@mail.gmail.com>
Date: Mon, 25 Sep 2006 23:58:58 -0400
From: "Jason Rottman" <from_email@email.com>
To: pipe@dvrtechnologies.com
Subject: final test
MIME-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_51905_4152802.1159243138539"
X-cPanel-MailScanner-Information: Please contact the ISP for more information
X-cPanel-MailScanner: Found to be clean
X-cPanel-MailScanner-SpamCheck: not spam, SpamAssassin (score=-0.302,
	required 8, AWL -0.63, BAYES_00 -2.60, HTML_10_20 1.35,
	HTML_MESSAGE 0.00, HTML_SHORT_LENGTH 1.57)
X-cPanel-MailScanner-From: from_email@email.com

------=_Part_51905_4152802.1159243138539
Content-Type: multipart/alternative; 
	boundary="----=_Part_51906_2938604.1159243138539"

------=_Part_51906_2938604.1159243138539
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

this is my final test
i think

------=_Part_51906_2938604.1159243138539
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

this is my final test<br>i think<br>

------=_Part_51906_2938604.1159243138539--

------=_Part_51905_4152802.1159243138539
Content-Type: image/gif; name="dvr_logo.gif"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="dvr_logo.gif"
X-Attachment-Id: f_esjrfs4v

R0lGODlhggAeAIcAAAAAAP///3x3Yf/7//v6//7+/9zr/+Hu/0+d/1Sh/1ul/2Oq/5XF/pnH/s7k
/tHl/tbo/tnq/t7t/+Lv/zmJ4USS6Vql9V6n9Wiu/26y/3S2/3u6/3m294C9/32494O//4a9+Im+
+I7B+ZDC+Z3K+qDL+qLM+qXO+6fP+6rR+63S+7HU/LTW/LbX+7jY/LnY/L3b/L/c/MHd/MTf/cfh
/cri/czj/dHm/tDl/dPn/tLm/dTo/tvs/zOQ8TqU8j+X8kSa8kud81Cg9FWj9GGp9WWr9Wes9Wqu
9m6w9nKy9nW09oC693u07obB/4O894nD/4vF/43G/4vA+JHI/5XK/5LE+ZbG+ZzO/5nI+bPW+7bY
+7ra/P3+/x5vtyp6xZnN/57Q/6HS/6TU/8jk/6jX/6vZ/7Pd/wZamAdbmSyExq7b/7Dc/7Pe/63W
9bXe/gZalwdcmghdmwlenAphngxjoQ5npA5log9ppRNtqxRhl7bd+BBrpxVyrhd0sRh3sxt6tx1+
uiCCviKGwiaNyCWKxSmQyyuUzy6Y0zGd1zOg2jSi2zWi3Dem4Dak3jio4Tqr5Tmp4jut5jyu5z6x
6j2v6D+y7EC07UCz7D+07L7b6c/o8ePw583dzvz9+/Dz2v//9f//+v///uTfov/62P/62e3dev71
w//3yv/4zv/50/752ZyZiL27sN7d1//mc//pgf/slP/umv/vo//xrf/zuIyIdK2qnP/fT//hWv/i
Y//ka//nev/qi4R/apSQfrWypsXDus7MxObl4f7UP6WhktbUzffINfjBLvjCL/fDL/jDMfjEMfjF
MvjGM/fGM/jGNO/u6/m7KPm8Kfm9Kvi+K/m/LPnALf/HN/q1Ivq2I/q3JPq4Jfq5Jvm4Jfq6J/m5
Jvm6J/uvHPuwHfuxHvuyH/qzIPu0If65LvyoFfypFvyqF/yrGPurGPysGvutG/2iEf2lEv2nFf6r
H/+ZB/+bCP6cCf6eC/6dC/2fDf2gD/+WBP+XBf/+/ff29f79/f///yH5BAMAAP8ALAAAAACCAB4A
AAj/AAMIBEVQYABQBgUKEJCwocOHECNKnEixosWLCUPx05hwYSpUCxsixEiypMmTKDuSIjUKlSla
s2QxTEmzps2aAlSxTHXK1KxZsXiFvEm06M2RBgWwWcpm08eXsoK+cqUL10yjWLOaVMp0qadTMKPy
eqUrF65bV7WqXduQ61Iza9SUIRMGTKZZsHjtcmX21q15+tKyHWzUbdy5YsJcoTIlypO8VM1e00dZ
MOHLKQVMGKOGTGIwX6hEgdJkwwYNGTAsKJWLsuvAmGPT1DxhgpjFU6A8+dBhQ4bUCxQokCNg377X
lmUrr0i79gQIDVCrFp6gy5nrZwTQozev+77ky8ND/2xe+4AEBsEVJKAgB/t1Affq1ds+D7z4+0kn
HDBvIEKEHDk4kMYccsgRBxxooJFdPvngY48996S1kACrBBDMTMAIkOFCqwRj0CoThrgQKwH004sA
vQQDokIMtTKTACQGAKIAxAgEYisGsTKiQS4KUIuHLpIYYgDQTFjLQwLw5x8EOeDgQA1p0DHHlAbG
kYcA77zDID74SDjhL/3M5IsARQ5po4gh4njiQsKsGEBILnoIYwDFpCmjADgGMOaEFb5pZABB+hnS
nkO1FQEEOzzggA01zDADDGnccUcddtixUDrpoIMOPJzC42UAtsBIo59vVlgoiyy2gqMwad3YI6AL
Xf/Iios1BlCLAP3ciCqpGTYUqAC+tCJMmbb0Mx4OjNIwgwwwvNDCCmnwgce0AogTTjjuuMPOOupk
+qmOrGQY6i+CCkBuRy9OCGtCM6rb44jgntmKrqSSSgye7s7JZ4lmtmWDsjLEsIULK6yQQhp99MEH
HwKQM84412bbTjvrfPqLhmWS+aYvJxbTVro8tgqyi7fC6OK5t0JD71Ah6RiAji3q26dA/dSZnAAy
bPECCyuokMIJJpCQBiB/FC2ANtlkg4055TgMsZcLnRurQqYKxvK+C90KjJtwMnQriRnW0vGdC/ly
qy9jHvlmLzPCKuSENqvrkABbtJCFz0CTgIUVaQT/EggggAjwzTfbIK20OUxDrXYAJyZV4Yl57hpi
hReiuPXIDGUY45q9nBl1P/fSaGwAG/Zii9vlBlNyLcAgqQIKJ5SgtxUjiBBCGoMQQoggAlBDjTTS
RBMNON9wo419+N0nQN57V2E7CEukUcgguQtgTTXYTzMN8NF4g3zy4QmARRUjSBGCE0twwEESaRzi
viECLKMMMvMfY8311HwPvnIClH/+Eh5YHxKOkAZEuO8QAmhGMxYiv/odQ3/7i40AnBBAJSRhgEUg
wgXS0IhFKCIRE0KEAJ7xDGY4A4IRlKAHLIjBIlzAAkNIgyMYwYhGNEIRHxSAMXaIwhTKRgAZfOEQ
YoQghCCkQRKRiMQjHgEJSDhCbgLphA9TKAAYEjEIQQBCGiZBCUpIQhJLfEQPp6g8IPzABz5IgyXW
WIlKnIqMKSxAAdqCxh6ocY2WSEsoDPIJOPrxTWosFBcMssdQDPKP4gkIADs=
------=_Part_51905_4152802.1159243138539--

    Any thoughts on a class or function of how to parse out the $to, $subject, etc. variables from the example above if the entire example above was stored in a string variable such as $email

    Thanks!
    -Jason

      Regular Expressions are your friend here. BTW, Gmail doesn't send the mail body twice, it's sends one HTML body and one plain text body to be compatible with older email clients. All emailapplications send mail this way.

      $subject = '';
      $to = '';
      
      if(preg_match('/^Subject: (.*)$/Uim', $email, $matches)) {
      	$subject = $matches[1];
      }
      
      if(preg_match('/^To: (.*)$/Uim', $email, $matches)) {
      	$to = $matches[1];
      }
      
      echo "Subject: $subject\nTo: $to\n";
      
        Write a Reply...